当前位置:   article > 正文

Jedis以及SpringBoot整合Redis_spring boot redis 默认jades

spring boot redis 默认jades

什么是jedis

是官方推荐的java连接开发工具!使用java操作Redis中间件,如果要用java操作redis,那么一定要对jedis十分熟悉。

jedis的使用:

1.导入jedis依赖

Maven Repository: redis.clients » jedis » 4.1.1 (mvnrepository.com)

2.编码测试

  • 连接数据库

  • 操作命令
  • 断开连接

jedis.close();

 通过jedis再次理解事务

StringBoot整合

说明在springBoot2.x之后,原来使用的jedis被替换为了lettuce

jedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedis pool连接池,更像BIO

lettuce:采用netty,实例可以在多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据,效率更高,更像NIO

源码分析:

  1. @Bean
  2. @ConditionalOnMissingBean(
  3. name = {"redisTemplate"}
  4. )// 我们可以自己定义一个redisTemplate来替换这个默认的
  5. @ConditionalOnSingleCandidate(RedisConnectionFactory.class)
  6. public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
  7. //默认的RedisTemplate 没有过多的设置,redis对象都是需要序列化
  8. //两个泛型都是object,object的类型,我们后使用需要强制转换<String,Object>
  9. RedisTemplate<Object, Object> template = new RedisTemplate();
  10. template.setConnectionFactory(redisConnectionFactory);
  11. return template;
  12. }
  13. //由于String是redis是最常用的类型,所以说单独提出来了一个bean
  14. @Bean
  15. @ConditionalOnMissingBean
  16. @ConditionalOnSingleCandidate(RedisConnectionFactory.class)
  17. public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
  18. return new StringRedisTemplate(redisConnectionFactory);
  19. }

整合测试:

1.导入依赖

2.配置连接

3.测试

 自定义RedisTemplate

  1. @Configuration
  2. public class RedisConfig {
  3. //编写我们自己的redisTemolate
  4. @Bean
  5. public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)throws UnknownHostException {
  6. //为了开发方便,一般直接用<String,Object>
  7. RedisTemplate<String, Object> template = new RedisTemplate();
  8. template.setConnectionFactory(redisConnectionFactory);
  9. //使用json的方式序列化所有对象
  10. Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
  11. ObjectMapper objectMapper = new ObjectMapper();
  12. objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  13. objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
  14. jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
  15. //创建string的序列化器
  16. StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
  17. //设置所有的key都使用string类型的序列化器
  18. template.setKeySerializer(stringRedisSerializer);
  19. //设置所有的hash类型的key也是用string类型的序列化器
  20. template.setHashKeySerializer(stringRedisSerializer);
  21. //设置hash类型的value使用json序列化器
  22. template.setHashValueSerializer(jackson2JsonRedisSerializer);
  23. //设置所有的value都使用json序列化器
  24. template.setValueSerializer(jackson2JsonRedisSerializer);
  25. template.afterPropertiesSet();
  26. return template;
  27. }
  28. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/160039
推荐阅读
相关标签
  

闽ICP备14008679号