RedisTemplate配置
在文章開頭,我們提到了使用原生Jedis操作的不友善性以及Spring-data-redis的改進,其實,使用後者的主要好處就在于,它提供了序列化選項,可以根據需要配置不同的序列化器來序列化鍵跟值。
Redis中存儲的是二進制,或者說字元串也行,是以一個對象是沒辦法直接存儲在Redis中的,我們可以将對象的一個個屬性拆分出來,但是這樣效率太低了,通過序列化器直接序列化,效率就高了很多啦,這裡是效率指的是編碼的效率。
@Bean
public RedisTemplate redisTemplate() {
// 注意這裡使用的是StringRedisTempalte
StringRedisTemplate template = new StringRedisTemplate(redisConnectionFactory());
GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
// 設定值的序列化器
template.setValueSerializer(jackson2JsonRedisSerializer);
return template;
}
請注意上面配置模闆的方式,在Spring-data-redis中,提供了兩種模闆、
- RedisTemplate
- StringRedisTempalte
差別在于,RedisTemplate的鍵值序列使用的是預設的序列化器,即JdkSerializationRedisSerializer,而StringRedisTemplate使用的是StringRedisSerializer。
在上面的配置中,我們也可以使用RedisTempalte,并且手動配置其對應的序列化器來覆寫預設的序列化器即可。
到此為止,配置環節就完成了,接下來就是使用了。
Spring-Data-Redis 使用
為Redis的五種不同的資料結構提供了五種不同的操作類,如下所示
ValueOperations<K, V> valueOps;
ListOperations<K, V> listOps;
SetOperations<K, V> setOps;
ZSetOperations<K, V> zSetOps;
HashOperations<K, HK, HV> hashOps;
通過tempalte.opsForXXX()方法來擷取對應的對象,然後執行相關操作。

注意RedisTemplate采用泛型。
對應的Ops的操作方式跟原生指令相似。