Lorsque j'utilise spring-data-redis, il y a deux problèmes.spring-data-redis avec cacheManager
Le premier problème est quand j'utilise le cache annation pour charger des données à Redis, mais je ne peux pas obtenir la valeur par redisTemplate, le code comme flux:
@Bean
RedisTemplate<Object, Object> redisTemplate() {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>();
redisTemplate.setConnectionFactory(jedisConnectionFactory());
return redisTemplate;
}
@Bean
public RedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory factory = new JedisConnectionFactory();
factory.setHostName("localhost");
factory.setPort(6379);
factory.setUsePool(true);
return factory;
}
@Bean
CacheManager cacheManager() {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate());
cacheManager.setDefaultExpiration(86400);
return cacheManager;
}
UserService comme flux:
@Cacheable("allUsers")
public List<UserModel> getAllUsers() {
logger.info("execute getAllUsers!");
return Arrays.asList(new UserModel("jason"), new UserModel("david"));
}
mon code de test est:
@Test
public void testCache() {
redisTemplate.delete("allUsers");
userService.getAllUsers(); // load user data
List<Object> users = redisTemplate.opsForList().range("allUsers", 0, -1); // get allUsers from redis
logger.info("get from template");
for(Object user : users) {
logger.info(((UserModel)user).getUsername());
}
logger.info("get from service");
for(UserModel user : userService.getAllUsers()) {
logger.info(user.getUsername());
}
et, j'ai trouvé le cache "AllUsers" dans Redis est tout Les utilisateurs ~ clés, mais je ne peux pas non plus obtenir de valeur par cette clé, comment puis-je obtenir la valeur par redisTemplate et pourquoi la clé est allUsers ~ clés en redis.
Le deuxième problème est que je mets un appel clé "mykey" par commond, et la valeur de réglage "mykey", et je ne peux pas obtenir la valeur nulle par le code java, je peux obtenir la valeur par commond. Comment c'est? Si les deux problèmes sont les mêmes? Quelqu'un sait-il cela? Merci avancez ^. ^.
mise à jour ma version de code est: printemps 4.1.6,
ressort données Redis 1.7.0,
Jedis 2.8.1
Redis 3.2.3