当前位置:   article > 正文

SpringBoot整合Jedis

springboot整合jedis

SpringBoot 内默认引用了jedis版本。所以我们直接引入jedis 依赖 无需在配置 jedis的版本号了。

一、引入jar包,pom文件

  1. <dependency>
  2. <groupId>redis.clients</groupId>
  3. <artifactId>jedis</artifactId>
  4. <version>3.2.0</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.commons</groupId>
  8. <artifactId>commons-pool2</artifactId>
  9. </dependency>

二、配置文件application,配置redis

  1. #设置服务启动的端口号默认8080
  2. server.port=8089
  3. #设置请求发生错误时显示的页面
  4. server.error.path=/error
  5. #redis
  6. spring.redis.database=0
  7. spring.redis.host=
  8. spring.redis.password=
  9. spring.redis.port=6379
  10. # 数据库连接超时时间,2.0 中该参数的类型为Duration,这里在配置的时候需要指明单位
  11. spring.redis.timeout=5000
  12. # 连接池配置,2.0中直接使用jedis或者lettuce配置连接池
  13. # 最大活跃连接数,负数为不限制
  14. spring.redis.jedis.pool.max-active=8
  15. # 等待可用连接的最大时间,负数为不限制
  16. spring.redis.jedis.pool.max-wait=-1
  17. # 最大空闲连接数
  18. spring.redis.jedis.pool.max-idle=8
  19. # 最小空闲连接数
  20. spring.redis.jedis.pool.min-idle=0

三、JedisConfig配置类

  1. @Configuration
  2. @Slf4j
  3. public class JedisConfig {
  4. //private Logger logger = LoggerFactory.getLogger(JedisConfig.class);
  5. @Value("${spring.redis.host}")
  6. private String host;
  7. @Value("${spring.redis.port}")
  8. private int port;
  9. @Value("${spring.redis.password}")
  10. private String password;
  11. @Value("${spring.redis.timeout}")
  12. private int timeout;
  13. @Value("${spring.redis.jedis.pool.max-active}")
  14. private int maxActive;
  15. @Value("${spring.redis.jedis.pool.max-idle}")
  16. private int maxIdle;
  17. @Value("${spring.redis.jedis.pool.min-idle}")
  18. private int minIdle;
  19. @Bean
  20. public JedisPool jedisPool(){
  21. JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
  22. jedisPoolConfig.setMaxIdle(maxIdle);
  23. jedisPoolConfig.setMinIdle(minIdle);
  24. jedisPoolConfig.setMaxTotal(maxActive);
  25. // 是否启用pool的jmx管理功能, 默认true
  26. jedisPoolConfig.setJmxEnabled(true);
  27. JedisPool jedisPool=new JedisPool(jedisPoolConfig,host,port,timeout,password);
  28. log.info("JedisPool连接成功:"+host+":"+port);
  29. return jedisPool;
  30. }
  31. }

测试JedisConfig配置成功

  1. @SpringBootTest
  2. public class JedisConfigTest {
  3. @Autowired
  4. private JedisPool jedisPool;
  5. @Test
  6. public void conextLoads() {
  7. System.out.println(jedisPool);
  8. Jedis jedis = jedisPool.getResource();
  9. jedis.set("name1","zjw");
  10. String name = jedis.get("name1");
  11. System.out.println(name);
  12. jedis.close();
  13. }
  14. }

四、工具类,JedisUtils,可以封装一些redis的操作,这里面只有获取资源和释放连接

  1. @Component
  2. public class JedisUtils {
  3. @Autowired
  4. private JedisPool jedisPool;
  5. /*获取Jedis资源*/
  6. public Jedis getJedis() {
  7. return jedisPool.getResource();
  8. }
  9. /*释放Jedis连接*/
  10. public void close(Jedis jedis) {
  11. if(jedis!=null) {
  12. jedis.close();
  13. }
  14. }
  15. }

五、具体实例JedisServiceImpl.java

  1. @Service
  2. @Log
  3. public class JedisServiceImpl {
  4. @Autowired
  5. private JedisUtils jedisUtils;
  6. /*
  7. 测试String
  8. */
  9. public String getString(String key) {
  10. Jedis jedis = jedisUtils.getJedis();
  11. String val = null;
  12. if (!jedis.exists(key)) {
  13. val = "黎明的光和影";
  14. log.info(key + "在MYSQL数据库中进行查询的结果是:" + val);
  15. jedis.set(key, val);
  16. log.info(key + "存入Redis中的值是:" + val);
  17. } else {
  18. val = jedis.get(key);
  19. log.info(key + "是在Redis中查询的数据。值是:" + val);
  20. }
  21. jedisUtils.close(jedis); //释放资源
  22. return val;
  23. }
  24. /**
  25. * 测试 jedis 操作hash类型
  26. * * 根据用户ID查询用户信息
  27. * * 先判断Redis中是否存在,
  28. * * 如果不存在,数据库中查询。并存到Redis中
  29. * * 如果存在,直接查询Redis 并返回
  30. */
  31. public User selectBy(String id) {
  32. String key = "user:"+id; //根据规则生成相同规范的key
  33. User user = new User();
  34. Jedis jedis = jedisUtils.getJedis();
  35. if (!jedis.exists(key)) { //数据库中查询,并进行存
  36. user.setId(id);
  37. user.setName("RedisHash");
  38. user.setAge(22);
  39. log.info("数据库中查询的用户信息是:" + user);
  40. Map<String, String> map = new HashMap();
  41. map.put("id", user.getId());
  42. map.put("name", user.getName());
  43. map.put("age",user.getAge().toString());
  44. jedis.hset(key, map);
  45. log.info(key + "成功存入Redis:" + user);
  46. } else {
  47. Map<String, String> map = jedis.hgetAll(key);
  48. user.setId(map.get("id"));
  49. user.setName(map.get("name"));
  50. System.out.println("map中的age"+map.get("age"));
  51. user.setAge(Integer.valueOf(map.get("age")));
  52. log.info(key + "Redis中查询出来的是:" + map);
  53. }
  54. Map<String, String> userVal = jedis.hgetAll(key);
  55. System.out.println(userVal+"mapUserVal");
  56. jedisUtils.close(jedis);
  57. return user;
  58. }
  59. /*
  60. redis数据库存储
  61. */
  62. public String select() {
  63. Jedis jedis = jedisUtils.getJedis();
  64. return "zhangjingwen";
  65. }
  66. }

测试:

  1. @SpringBootTest
  2. public class JedisUtilsTest {
  3. @Autowired
  4. private JedisServiceImpl jedisService;
  5. @Test
  6. public void t1() {
  7. String val = jedisService.getString("name1");
  8. String val2= jedisService.getString("age");
  9. String val3= jedisService.getString("name");
  10. System.out.println(val+ val2+val3);
  11. }
  12. @Test
  13. public void test() {
  14. User user = jedisService.selectBy("2");
  15. System.out.println(user);
  16. }
  17. }

 

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

闽ICP备14008679号