再項目使用了redis儲存key,測試需要在客戶端刪除對應的key,發現查詢不到對應的key
redis客戶端:
發現redisTemplate實際存進去的key會多了幾個字符
原因:程序中對key沒做序列化存儲
如果你用redis客戶端查詢你想要的key,redisTemplate下面添加這兩個屬性
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<property name="hashKeySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
或者
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
注意如果使用springboot會默認創建JdkSerializationRedisSerializer序列化類,我們需要自己定義redisTemplate對應的bean,且bean的名稱必須為redisTemplate,否則springboot會默認創建