springboot2.x整合Redis 之 jedis

谁践踏了优雅 2022-11-20 05:53 380阅读 0赞

:SpringBoot2.x之后取消了对Jedis的支持,取而代之的是Lettuce。有关Lecture的学习请参考:https://hcshow.blog.csdn.net/article/details/105863342

第一步:创建项目,添加Maven依赖

  1. <dependency>
  2. <groupId>org.projectlombok</groupId>
  3. <artifactId>lombok</artifactId>
  4. <version>1.18.10</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.fasterxml.jackson.core</groupId>
  8. <artifactId>jackson-core</artifactId>
  9. <version>2.10.1</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>com.fasterxml.jackson.core</groupId>
  13. <artifactId>jackson-databind</artifactId>
  14. <version>2.10.1</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>com.fasterxml.jackson.core</groupId>
  18. <artifactId>jackson-annotations</artifactId>
  19. <version>2.10.1</version>
  20. </dependency>
  21. <!-- 解决java8新日期API反序列化异常:com.fasterxml.jackson.databind.exc.InvalidDefinitionException-->
  22. <dependency>
  23. <groupId>com.fasterxml.jackson.datatype</groupId>
  24. <artifactId>jackson-datatype-jsr310</artifactId>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter</artifactId>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-starter-test</artifactId>
  33. <scope>test</scope>
  34. <exclusions>
  35. <exclusion>
  36. <groupId>org.junit.vintage</groupId>
  37. <artifactId>junit-vintage-engine</artifactId>
  38. </exclusion>
  39. </exclusions>
  40. </dependency>
  41. <!--redis默认使用的Lettuce客户端-->
  42. <dependency>
  43. <groupId>org.springframework.boot</groupId>
  44. <artifactId>spring-boot-starter-data-redis</artifactId>
  45. </dependency>
  46. <!--使用默认的Lettuce时,若配置spring.redis.lettuce.pool则必须配置该依赖-->
  47. <dependency>
  48. <groupId>org.apache.commons</groupId>
  49. <artifactId>commons-pool2</artifactId>
  50. </dependency>
  51. <dependency>
  52. <groupId>redis.clients</groupId>
  53. <artifactId>jedis</artifactId>
  54. <version>3.2.0</version>
  55. </dependency>

第二步:配置文件application.yml

  1. spring:
  2. redis:
  3. database: 0
  4. host: 127.0.0.1
  5. port: 6379
  6. # password: 123456
  7. jedis:
  8. pool:
  9. max-active: 100
  10. max-idle: 3
  11. max-wait: -1
  12. min-idle: 0
  13. timeout: 1000

第三步:Redis配置文件

  1. @Configuration
  2. public class RedisConfig {
  3. @Bean
  4. public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
  5. RedisTemplate<Object, Object> template = new RedisTemplate<>();
  6. template.setConnectionFactory(connectionFactory);
  7. //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
  8. GenericJackson2JsonRedisSerializer serializer = new GenericJackson2JsonRedisSerializer();
  9. //使用StringRedisSerializer来序列化和反序列化redis的key值
  10. template.setKeySerializer(new StringRedisSerializer());
  11. template.setHashKeySerializer(new StringRedisSerializer());
  12. template.setValueSerializer(serializer);
  13. template.setHashValueSerializer(serializer);//设置值的序列化方式,默认是二进制
  14. template.afterPropertiesSet();
  15. return template;
  16. }
  17. @Bean
  18. public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) {
  19. StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
  20. stringRedisTemplate.setConnectionFactory(factory);
  21. return stringRedisTemplate;
  22. }
  23. }

第四步:测试代码

  1. @SpringBootTest
  2. public class HashDemoTest {
  3. @Resource
  4. private RedisTemplate redisTemplate;
  5. @Test
  6. public void fun0(){
  7. redisTemplate.opsForHash().put("sss","k1","v1");
  8. //设置指定key过期时间
  9. redisTemplate.expire("sss",2,TimeUnit.MINUTES);
  10. }
  11. @Test
  12. public void fun1(){
  13. System.out.println(redisTemplate);
  14. Map<String, String> map = new HashMap<>();
  15. map.put("key1", "value1");
  16. map.put("key2", "value2");
  17. map.put("key3", "value3");
  18. map.put("key4", "value4");
  19. map.put("key5", "value5");
  20. redisTemplate.opsForHash().putAll("map1", map);
  21. redisTemplate.expire("map1",30, TimeUnit.HOURS);
  22. }
  23. @Test
  24. public void fun2(){
  25. String value = (String) redisTemplate.opsForHash().get("map1", "key1");
  26. System.out.println("value:" + value);
  27. Map<String, String> resultMap = redisTemplate.opsForHash().entries("map1");
  28. System.out.println("resultMap:" + resultMap);
  29. Set<String> keys = redisTemplate.opsForHash().keys("map1");
  30. System.out.println("keys:" + keys);
  31. List<String> values = redisTemplate.opsForHash().values("map1");
  32. System.out.println("values:" + values);
  33. }
  34. @Test
  35. public void fun3(){
  36. //删除Hash中指定的key
  37. Long delete = redisTemplate.opsForHash().delete("map1", "key1");
  38. System.out.println(delete);
  39. Map<String, String> resultMap = redisTemplate.opsForHash().entries("map1");
  40. System.out.println("resultMap:" + resultMap);
  41. }
  42. }

发表评论

表情:
评论列表 (有 0 条评论,380人围观)

还没有评论,来说两句吧...

相关阅读

    相关 springboot2.X整合redis

    趁着今天休息就学习了一下redis,刚开始配置的时候遇到一些坑,现在写下来记一下,首先springboot使用的版本是2.X(我使用的是2.1.6)我的是在本地配置的,环境是w