Reputation: 181
1.Set key name
with alex
using Spring data redis
Library.
@Test
public void testOne() throws Exception {
redisTemplate.opsForValue().set("name","alex");
}
2.Try get name from Terminal with redis-cli
but get Nil
127.0.0.1:6379> get name
(nil)
3.However alex
can be retrieve like this
Object hello = redisTemplate.opsForValue().get("name");
System.out.println(hello);
-----
alex
Can anyone explain this, thanks!
Upvotes: 3
Views: 4034
Reputation: 475
Set some serializer
options on your RedisTemplate
like below 👇
private RedisTemplate<String, ?> createRedisTemplateForEntity() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(getRedisConnectionFactory());
redisTemplate.setHashValueSerializer(new StringRedisSerializer());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
where getRedisConnectionFactory()
returns your Redis connection (ie: JedisConnectionFactory
).
😄
Upvotes: 0
Reputation: 6736
RedisTemplate
converts keys and values depending on the configured RedisSerializer
s (see 6.7 Serializers). The default is JdkSerializationRedisSerializer
.
Given the String name
the actual key in redis looks like:
GenericJackson2JsonRedisSerializer : "name"
JacksonJsonRedisSerializer: : "name"
Jackson2JsonRedisSerializer: : "name"
JdkSerializationRedisSerializer : \xac\xed\x00\x05t\x00\x04name
OxmSerializer with XStreamMarshaller: <string>name</string>
StringRedisSerializer : name
So in case you intend to just work with Strings the convenience classes like StringRedisTemplate
might be a good choice.
Upvotes: 2