Permettant cache Redis au printemps de démarrage
J'ai de configuration suivantes sur mon ressort de démarrage du projet.
@SpringBootApplication
@EnableTransactionManagement
@EnableCaching
@EnableScheduling
@EnableAsync
public class Application {
String redisHost = "localhost";
int redisPort = 6379;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory factory = new JedisConnectionFactory();
factory.setHostName(redisHost);
factory.setPort(redisPort);
factory.setUsePool(true);
return factory;
}
@Bean
RedisTemplate<Object, Object> redisTemplate() {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>();
redisTemplate.setConnectionFactory(jedisConnectionFactory());
return redisTemplate;
}
@Bean
public CacheManager cacheManager() {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate());
return cacheManager;
}
}
Aussi j'ai suivantes maven dépendance sur pom.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
J'ai séparé redis serveur qui tourne sur ma machine locale sur le port défini. D'ailleurs dans mes classes de service, j'ai annotations: @Cacheable, @CachePut à l'appui de la mise en cache.
Je peux commencer au printemps de démarrage de l'application, sans les erreurs et les opérations CRUD fonctionne également. Mais il semble qu'il n'est pas en utilisant la définition de cache redis. J'ai utilisé "redi bureau de la crèche' outil de navigation et ne pouvais pas trouver toutes les données sur le redis. Aussi j'ai essayé avec la surveillance redis serveur via le redis commande cli "moniteur", je ne peux pas voir les changements sur le moniteur.
Donc je suppose redis la mise en cache ne fonctionne toujours pas sur mon ressort de démarrage de l'application. Quelqu'un peut-il m'aider à comprendre le problème?
Je suis en utilisant le printemps de démarrage de la version 1.4.2.COMMUNIQUÉ de
Merci!
OriginalL'auteur lsc | 2017-01-14
Vous devez vous connecter pour publier un commentaire.
Étant donné que vous êtes en utilisant Printemps de Démarrage, une grande partie de votre Redis configuration est inutile puisque Printemps de Démarrage offre "auto-configuration" soutien pour le Redis, à la fois comme un source de données ainsi que d'un la mise en cache fournisseur.
Vous aussi, n'ont pas spécifique à propos de la version de Printemps de Démarrage vous utilisez (par exemple,
1.5.0.RC1
) pour exécuter votre application, ou si vous avez eu desapplication.properties
sur votre classpath de l'application, ce qui pourrait faire une différence si vous l'avez explicitement spécifiéspring.cache.type
(réglé sur autre chose que "redis", par exemple).Cependant, en général, je ne vois pas vraiment beaucoup de mal avec votre Redis ou Printemps Cache
@Configuration
classe. Cependant, il ne semble pas être un problème de ne pas définir explicitementcacheManager.setUsePrefix(true)
. Lorsque j'ai mis ceRedisCacheManager
propriété ('usePrefix`), puis tout a fonctionné comme prévu.Je ne suis pas (du Printemps de Données) Redis expert donc je ne suis pas sûr de savoir exactement pourquoi cela est nécessaire. Cependant, j'ai basé ma configuration de test sur Printemps de Démarrage du "auto-configuration" appui pour la mise en cache Redis ainsi que votre
@Configuration
"Application" de la classe, illustré ci-dessus.Et, parce que vous pouvez éliminer la plupart de vos explicite de la configuration et de l'utilisation Printemps de Démarrage du "configuration automatique" support pour le Redis comme une source de données en tant que bien, j'ai ajouté un
"AutoRedisConfiguration"
@Configuration
classe de ma classe de test. I. e. vous pouvez l'utiliser pour configurer le Redis au lieu de mes autres@Configuration
classe ("CustomRedisConfiguration"
) qui utilise votre configuration + le fixer.Voici le test complet exemple...
Espérons que cette aide!
Cheers,
Jean
1.5.0.RC1
ainsi que laspring-boot-starter-data-redis
. Dans monAutoRedisConfiguration
la classe, j'ai de définir explicitement lespring.cache.type
à Redis car j'ai d'autres exemples dans mon projet de test que d'utiliser les autres fournisseurs de mise en cache, comme Pivot GemFire, Apache Geode et Hazelcast, mais ce n'est pas strictement nécessaire si vous n'avez pas d'autres fournisseurs de mise en cache au Printemps de Démarrage de l'auto-support de configuration sur votre classpath.Merci je vais vous faire connaître les résultats. Mon de printemps version de démarrage est la 1.4.2.LIBÉRATION
OriginalL'auteur John Blum
Je suis à l'aide de Spring Boot 2.0 et il est très simple à utiliser Redis pour la simple mise en cache de l'objectif.
Dans votre application.les propriétés de ces propriétés
printemps.le cache.type=redis
redis.de l'hôte.url=
redis.de l'hôte.port=
D'annoter vos méthodes avec @Cacheable.
Que c'est!!
Si vous utilisez AWS Elasticache et que vous avez coché la case de transport de chiffrement ensuite, vous devez ajouter un RedisConfiguration fichier à définir votre ssl true.
Printemps Boot 2.0 utilise maintenant LettuceConnectionFactory.
À faire la-dessus il suffit d'ajouter une classe et il marque avec @Configuration d'annotation et ajoutez la fève
OriginalL'auteur Sukalpo