springboot + redis

上一篇文章中我们引入了mysql的配置,接下来我们引入使用非常广泛的缓存组件redis;

(注意,以下我引用的是自定义的redis配置,目的是更好的定制化一些功能以及多实例redis处理,并没有采用spring自身封装的RedisTemplate,个人认为spring封装的redisTemplate还存在一些问题,所以有条件的童鞋最好自定义redis相关功能)。

注:基于demo-springboot;

1.打开application-dev.properties并加入以下内容:

#redis
#redis db
spring.redis.database=0
#redis host & port
spring.redis.host=10.0.2.13
spring.redis.port=6379
spring.redis.password=
#连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=1000
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=100
#连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=0

以上为redis常用的相关配置以及说明;

pom.xml中加入相关依赖:

<!--redis-->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>21.0</version>
</dependency>
<dependency>
    <groupId>com.caucho</groupId>
    <artifactId>hessian</artifactId>
    <version>4.0.38</version>
</dependency>


2.在demo下新建package config,创建RedisConfig类


@Configuration
@EnableAutoConfiguration
@ConfigurationProperties(prefix = "spring.redis")
public class RedisConfig {

   private static Logger logger = LoggerFactory.getLogger(RedisConfig.class);

   private String host;

   private int port;

   private String password;

    @Value("${spring.redis.timeout}")
   private int timeout;
   
    @Value("${spring.redis.jedis.pool.max-idle}")
   private int maxIdle;
    
    @Value("${spring.redis.jedis.pool.min-idle}")
    private int minIdle;

    @Value("${spring.redis.jedis.pool.max-wait}")
   private int maxWaitMillis;
    
    @Value("${spring.redis.jedis.pool.max-active}")
   private int maxActive;
    
   private boolean testOnBorrow = true;

   @Bean
   public JedisPoolConfig getRedisConfig() {
      JedisPoolConfig config = new JedisPoolConfig();
      config.setMaxIdle(maxIdle);
      config.setMinIdle(minIdle);
      config.setMaxTotal(maxActive);
      config.setMaxWaitMillis(maxWaitMillis);
      config.setTestOnBorrow(testOnBorrow);
      return config;
   }

   @Bean("redisExtendClient")
   public RedisExtendClient redisExtendClient() {
      RedisExtendClient client = new RedisExtendClient(shardedJedisPool());
      return client;
   }
   
   @Bean("shardedJedisPool")
   public ShardedJedisPool shardedJedisPool() {
      JedisPoolConfig config = getRedisConfig();
      List<JedisShardInfo> jdsInfoList =new ArrayList<JedisShardInfo>(2);
      JedisShardInfo infoA = new JedisShardInfo(host, port);
      jdsInfoList.add(infoA);
      ShardedJedisPool pool = new ShardedJedisPool(config, jdsInfoList, Hashing.MURMUR_HASH,
            Sharded.DEFAULT_KEY_TAG_PATTERN);
      return pool;
   }

   public int getPort() {
      return port;
   }

   public void setPort(int port) {
      this.port = port;
   }

   public String getPassword() {
      return password;
   }

   public void setPassword(String password) {
      this.password = password;
   }

   public int getTimeout() {
      return timeout;
   }

   public void setTimeout(int timeout) {
      this.timeout = timeout;
   }

   public String getHost() {
      return host;
   }

   public void setHost(String host) {
      this.host = host;
   }
}

以上为自定义的redis config,采用了多实例(多分片),RedisExtendClient 为我自定的redis操作工具类(封装了各种redis的相关操作,在此我就不贴出来了); ok一切配置就绪,接下来我们开始测试一下吧!


3.编写单元测试:


至此,你已成功引入redis缓存组件,congratulation!

猜你喜欢

转载自blog.csdn.net/zwx19921215/article/details/79789505