MyJedisPoolConfig.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package com.ydtech.components;
  2. import com.ydtech.utils.StringUtils;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.stereotype.Component;
  5. import redis.clients.jedis.JedisPool;
  6. import redis.clients.jedis.JedisPoolConfig;
  7. /**
  8. * jedisPool的配置
  9. *
  10. * @author: lig
  11. * @date: 2023年03月13日 0013
  12. */
  13. @Component
  14. public class MyJedisPoolConfig {
  15. private MyJedisPoolConfig() {
  16. }
  17. //redis主机的ip
  18. private static String host;
  19. //redis主机的端口号
  20. private static int port;
  21. //登录口令
  22. private static String auth;
  23. /**
  24. * 连接超时和读写超时(单位ms)
  25. * 读写超时即:redis对该命令执行时间太长,超过设定时间后就放弃本次请求
  26. */
  27. private static int connAndReadWriteTimeOut;
  28. /**
  29. * 通过非静态的setter来给静态的属性赋值
  30. *
  31. * @param redisHost
  32. */
  33. @Value("${spring.redis.host}")
  34. public void setRedisHost(String redisHost) {
  35. MyJedisPoolConfig.host = redisHost;
  36. }
  37. @Value("${spring.redis.port}")
  38. public void setRedisPort(int redisPort) {
  39. MyJedisPoolConfig.port = redisPort;
  40. }
  41. @Value("${spring.redis.password}")
  42. public void setAuth(String redisAuth) {
  43. MyJedisPoolConfig.auth = redisAuth;
  44. }
  45. @Value("${spring.redis.timeOut}")
  46. public void setAuth(int timeOut) {
  47. MyJedisPoolConfig.connAndReadWriteTimeOut = timeOut;
  48. }
  49. private static class innerClass {
  50. //静态内部类保存一个jedisPool的实例
  51. // private static JedisPool jedisPool = null;
  52. private static JedisPool jedisPool = new JedisPool(getConfig(), host, port, connAndReadWriteTimeOut, StringUtils.isNotEmpty(auth)?auth:null);
  53. private static JedisPoolConfig getConfig() {
  54. JedisPoolConfig poolConfig = new JedisPoolConfig();
  55. //========= jedisPool的一些配置=============================
  56. poolConfig.setMaxTotal(10000);//最大连接数
  57. poolConfig.setMaxIdle(50);//最多空闲数
  58. poolConfig.setMaxWaitMillis(5 * 1000);//当池中没有连接时,最多等待5秒
  59. return poolConfig;
  60. }
  61. }
  62. /**
  63. * 返回jedisPool实例
  64. *
  65. * @return
  66. */
  67. public static JedisPool getJedisPool() {
  68. // if(null == innerClass.jedisPool){
  69. // String o = StringUtils.isNotEmpty(auth)?null:auth;
  70. // innerClass.jedisPool = new JedisPool(innerClass.getConfig(), host, port, connAndReadWriteTimeOut, o);
  71. // }
  72. return innerClass.jedisPool;
  73. }
  74. }