SpringBoot配置Redis连接池

我就是我 2022-06-03 04:50 631阅读 0赞

首先是redis各个参数的配置,在 application-dev.properties中配置如下:

  1. #redis配置
  2. redis.server.host=192.168.50.162
  3. redis.server.port=6379
  4. redis.server.password=password
  5. redis.server.timeOut=5000
  6. redis.server.maxIdle=50
  7. redis.server.maxWaitMillis=5000
  8. redis.server.maxTotal=500

对 redis 配置参数进行读取和绑定,配置属性注入到 JedisProperties

  1. import org.springframework.boot.context.properties.ConfigurationProperties;
  2. @ConfigurationProperties(prefix = JedisProperties.JEDIS_PREFIX)
  3. public class JedisProperties {
  4. public static final String JEDIS_PREFIX = "redis.server";
  5. private String host;
  6. private int port;
  7. private String password;
  8. private int maxTotal;
  9. private int maxIdle;
  10. private int maxWaitMillis;
  11. private int timeOut;
  12. public int getTimeOut() {
  13. return timeOut;
  14. }
  15. public void setTimeOut(int timeOut) {
  16. this.timeOut = timeOut;
  17. }
  18. public String getPassword() {
  19. return password;
  20. }
  21. public void setPassword(String password) {
  22. this.password = password;
  23. }
  24. public String getHost() {
  25. return host;
  26. }
  27. public void setHost(String host) {
  28. this.host = host;
  29. }
  30. public int getPort() {
  31. return port;
  32. }
  33. public void setPort(int port) {
  34. this.port = port;
  35. }
  36. public int getMaxTotal() {
  37. return maxTotal;
  38. }
  39. public void setMaxTotal(int maxTotal) {
  40. this.maxTotal = maxTotal;
  41. }
  42. public int getMaxIdle() {
  43. return maxIdle;
  44. }
  45. public void setMaxIdle(int maxIdle) {
  46. this.maxIdle = maxIdle;
  47. }
  48. public int getMaxWaitMillis() {
  49. return maxWaitMillis;
  50. }
  51. public void setMaxWaitMillis(int maxWaitMillis) {
  52. this.maxWaitMillis = maxWaitMillis;
  53. }
  54. }

配置了 Redis 连接池之后,将 Redis 连接池 注入到 RedisClient 中,并生成 RedisClient Bean

  1. import com.mljr.auth.config.properties.JedisProperties;
  2. import com.mljr.auth.util.RedisClient;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.beans.factory.annotation.Qualifier;
  7. import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
  8. import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
  9. import org.springframework.boot.context.properties.EnableConfigurationProperties;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.context.annotation.Configuration;
  12. import redis.clients.jedis.JedisPool;
  13. import redis.clients.jedis.JedisPoolConfig;
  14. @Configuration
  15. @EnableConfigurationProperties(JedisProperties.class)
  16. @ConditionalOnClass(RedisClient.class)
  17. public class JedisConfig {
  18. private Logger logger = LoggerFactory.getLogger(JedisConfig.class);
  19. @Autowired
  20. private JedisProperties prop;
  21. @Bean(name = "jedisPool")
  22. public JedisPool jedisPool() {
  23. JedisPoolConfig config = new JedisPoolConfig();
  24. config.setMaxTotal(prop.getMaxTotal());
  25. config.setMaxIdle(prop.getMaxIdle());
  26. config.setMaxWaitMillis(prop.getMaxWaitMillis());
  27. return new JedisPool(config, prop.getHost(), prop.getPort(), prop.getTimeOut(), prop.getPassword());
  28. }
  29. @Bean
  30. @ConditionalOnMissingBean(RedisClient.class)
  31. public RedisClient redisClient(@Qualifier("jedisPool") JedisPool pool) {
  32. logger.info("初始化……Redis Client==Host={},Port={}", prop.getHost(), prop.getPort());
  33. RedisClient redisClient = new RedisClient();
  34. redisClient.setJedisPool(pool);
  35. return redisClient;
  36. }
  37. }

配置一些常用的 redis 的操作:

  1. import redis.clients.jedis.Jedis;
  2. import redis.clients.jedis.JedisPool;
  3. public class RedisClient {
  4. private JedisPool jedisPool;
  5. public void set(String key, Object value) {
  6. Jedis jedis = null;
  7. try {
  8. jedis = jedisPool.getResource();
  9. jedis.set(key, value.toString());
  10. }catch (Exception e){
  11. e.printStackTrace();
  12. }finally {
  13. jedis.close();
  14. }
  15. }
  16. /**
  17. * 设置过期时间
  18. * @param key
  19. * @param value
  20. * @param exptime
  21. * @throws Exception
  22. */
  23. public void setWithExpireTime(String key, String value, int exptime) {
  24. Jedis jedis = null;
  25. try {
  26. jedis = jedisPool.getResource();
  27. jedis.set(key, value, "NX", "EX", 300);
  28. } catch (Exception e){
  29. e.printStackTrace();
  30. }finally {
  31. jedis.close();
  32. }
  33. }
  34. public String get(String key) {
  35. Jedis jedis = null;
  36. try {
  37. jedis = jedisPool.getResource();
  38. return jedis.get(key);
  39. } catch (Exception e){
  40. e.printStackTrace();
  41. }finally {
  42. if (jedis != null)
  43. jedis.close();
  44. }
  45. return null;
  46. }
  47. public JedisPool getJedisPool() {
  48. return jedisPool;
  49. }
  50. public void setJedisPool(JedisPool jedisPool) {
  51. this.jedisPool = jedisPool;
  52. }
  53. }

大功告成,使用注解的方式引入就可以使用了

  1. @Autowired
  2. private RedisClient redisClient;
  3. ....
  4. ....
  5. ....

发表评论

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

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

相关阅读