我正在试验 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 上执行“获取 key ”,但我没有看到为该 key 设置的任何值。
有人可以帮忙吗?
谢谢
最佳答案
@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"/>
在更改序列化方法之前,请从商店中删除所有先前序列化的键值,否则您将收到错误消息。
关于java - 无法使用 Spring Data Redis 保留数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19296980/