我正在试验Spring Data Redis。我已经编写了一个Java类,它允许我连接到Redis服务器,但不会将数据持久化到服务器中。有没有人知道可能出了什么问题?以下是一些细节-
我的spring配置看起来像-
<bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:use-pool="true" p:host-name="127.0.0.1" p:port="6379"/>
<!-- redis template definition -->
<bean id="redisTemplate"
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnFactory"/>我的Java代码如下所示-
public class CacheClient {
@Autowired
private RedisTemplate<String, String> template;
public void setValue(String key, String value){
template.boundValueOps(key).set(value);
}
}一旦我调用了template.setValue( key,value),我在redis-cli上执行了一个"get key“,但是我没有看到为这个键设置的任何值。
有人能帮个忙吗?
谢谢
发布于 2014-08-27 21:31:00
@user2862924你的评论是对的,它序列化了键和值。它使用JdkSerializationRedisSerializer()将字符串"a"转换为\xac\xed\x00\x05t\x00\x01a
redisTemplate.setKeySerializer(new StringRedisSerializer());就是你想要的。
在配置文件中设置此值更简洁。
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:hostName="127.0.0.1" p:port="6379"/>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
p:connectionFactory-ref="jedisConnectionFactory" p:keySerializer-ref="stringRedisSerializer" p:valueSerializer-ref="stringRedisSerializer"/>在更改序列化方法之前,请从store中删除所有以前序列化过的键值,否则会出错。
发布于 2013-10-10 22:54:56
尝试使用opsForValue()
public void setValue(String key, String value){
template.opsForValue().set(key, value);
}https://stackoverflow.com/questions/19296980
复制相似问题