天天看点

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的操作方式跟原生命令相似。