使用RedisTemplate设置一个值,但从Terminal Redis-CLI获取Nil

时间:2016-01-12 05:36:35

标签: redis spring-data

1.使用name库设置alex密钥Spring data redis

 @Test
public void testOne() throws Exception {
    redisTemplate.opsForValue().set("name","alex");
}

2.尝试使用redis-cli从终端获取名称,但获取Nil

127.0.0.1:6379> get name
(nil)

3.但alex可以像这样检索

Object hello = redisTemplate.opsForValue().get("name");
System.out.println(hello);
-----
alex

任何人都可以解释一下,谢谢!

2 个答案:

答案 0 :(得分:1)

RedisTemplate会根据配置的RedisSerializer转换键和值(请参阅6.7 Serializers)。默认值为JdkSerializationRedisSerializer

给定字符串name,redis中的实际键如下:

GenericJackson2JsonRedisSerializer  : "name"
JacksonJsonRedisSerializer:         : "name"
Jackson2JsonRedisSerializer:        : "name"
JdkSerializationRedisSerializer     : \xac\xed\x00\x05t\x00\x04name
OxmSerializer with XStreamMarshaller: <string>name</string>
StringRedisSerializer               : name

因此,如果您打算使用字符串,convenience classes StringRedisTemplate可能是一个不错的选择。

答案 1 :(得分:0)

尝试使用"围绕密钥:

127.0.0.1:6379> get "name"