我使用了 spring-data-redis 并将模板设置如下:
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(jedisConnectionFactory());
//template.setDefaultSerializer(new StringRedisSerializer());
return template;
}
@Autowired
private RedisTemplate<String, Object> redisTemplate;
private ValueOperations<String, Object> valueOps;
public static final String CATEGORY="QUOTE";
public void save(String key, String value) {
valueOps.set(key, value);
logger.info("redis get key={}, value={}", key, get(key));
}
当我运行代码时,它可以将值显示为字符串,
Aug 02, 2017 5:00:52 下午 com.web.service.QuoteRepo save
INFO: redis get key=QUOTE:932:324371:rem, value=4
当我去redis客户端的时候
$ ./redis-cli
127.0.0.1:6379>get QUOTE:932:324371:rem
(nil)
最佳答案
注意这行代码:
private ValueOperations<String, Object> valueOps;
您应该将模板作为 ValueOperations 注入(inject)。你忘记了这样的事情:
@resource(name="redisTemplate")
private ValueOperations<String, Object> valueOps;
更多信息请引用:https://docs.spring.io/spring-data/redis/docs/1.8.6.RELEASE/reference/html/ Section5.5对你有帮助。
关于redis - 为什么redis-cli获取程序设置的对象的值总是nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45456262/