您当前的位置: 首页 >  redis

Spring-Data-Redis实战-配置及基本API

发布时间:2020-09-28 17:04:55 ,浏览量:0

Spring-Data-Redis是Spring-Data项目的一个子项目,主要用于操作Redis,通过Spring-data-redis工具,使得操作Redis以更加面向对象的方式。

Spring-data-redis配置

引入依赖如下

注意版本这里以2.1.16.RELEASE。

Bean配置

在Spring Boot 2.X中,有两种不同的使用操作,一种是使用Jedis,一种是使用Lettuce,现在主流后者。

连接池的配置

@Bean public JedisPoolConfig poolConfig() { JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(100); poolConfig.setMaxWaitMillis(30 * 1000); poolConfig.setMinIdle(20); poolConfig.setMaxIdle(40); poolConfig.setTestWhileIdle(true); return poolConfig; } 
连接工厂配置

1.x可以直接通过JedisConnectionFactory,设置各种配置信息,但是在2.x之后,所有的set方法都被标注为过期了。通过查看JedisConnectionFactory的构造方法也可以看出,所以,如果是使用单机版的Redis的话,需要配置一下两个内容

public JedisConnectionFactory( RedisStandaloneConfiguration standaloneConfig, JedisClientConfiguration clientConfig) {} 

当然,可以不配置连接池信息,这里连接池的配置也是有区别与1.x,使用的是JedisClientConfiguration进行配置

@Bean public RedisStandaloneConfiguration redisStandaloneConfiguration() { RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(); configuration.setHostName(host); configuration.setPassword(RedisPassword.of(password)); configuration.setPort(port); return configuration; } 
@Bean public JedisClientConfiguration clientConfiguration() { JedisClientConfiguration.JedisClientConfigurationBuilder builder = JedisClientConfiguration.builder(); return builder.usePooling() .poolConfig(poolConfig()) .build(); } 

请特别留意上面的JedisClientConfiguration的配置,通过builder来构造,然后使用usePooling()以及poolConfig()来配置连接池信息,网上很多的直接构造一个JedisPool的bean的方案在2.x中是不生效的,不信的话,断点查看一下连接池信息,还是默认的方式。

@Bean public JedisConnectionFactory redisConnectionFactory() { return new JedisConnectionFactory(redisStandaloneConfiguration(), clientConfiguration()); } 
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的操作方式跟原生命令相似。

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0778s