天天看點

Spring-Data-Redis實戰-配置及基本API(下)RedisTemplate配置Spring-Data-Redis 使用

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()方法來擷取對應的對象,然後執行相關操作。

Spring-Data-Redis實戰-配置及基本API(下)RedisTemplate配置Spring-Data-Redis 使用

注意RedisTemplate采用泛型。

對應的Ops的操作方式跟原生指令相似。