redis在java中的使用

redis连接池、连接工厂

Posted by jbro on March 26, 2020

java config redis有关配置如下

Jedis客户端配置

  private JedisClientConfiguration getJedisClientConfiguration() {
    JedisClientConfiguration.JedisClientConfigurationBuilder builder = applyProperties(
            JedisClientConfiguration.builder());
    RedisProperties.Pool pool = this.redisProperties.getJedis().getPool();
    if (pool != null) {
        applyPooling(pool, builder);
    }
    return builder.build();
  }
  private JedisClientConfiguration.JedisClientConfigurationBuilder applyProperties(
          JedisClientConfiguration.JedisClientConfigurationBuilder builder) {
      if (this.redisProperties.isSsl()) {
          builder.useSsl();
      }
      if (this.redisProperties.getTimeout() != null) {
          Duration timeout = this.redisProperties.getTimeout();
          builder.readTimeout(timeout).connectTimeout(timeout);
      }
      return builder;
  }
  private void applyPooling(RedisProperties.Pool pool,
                            JedisClientConfiguration.JedisClientConfigurationBuilder builder) {
      builder.usePooling().poolConfig(jedisPoolConfig(pool));
  }

  private JedisPoolConfig jedisPoolConfig(RedisProperties.Pool pool) {
      JedisPoolConfig config = new JedisPoolConfig();
      config.setMaxTotal(pool.getMaxActive());
      config.setMaxIdle(pool.getMaxIdle());
      config.setMinIdle(pool.getMinIdle());
      if (pool.getMaxWait() != null) {
          config.setMaxWaitMillis(pool.getMaxWait().toMillis());
      }
      return config;
  }
  

jedis 单机相关配置

  RedisStandaloneConfiguration getStandaloneConfig() {
        RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
        config.setHostName(this.redisProperties.getHost());
        config.setPort(this.redisProperties.getPort());
        config.setPassword(RedisPassword.of(this.redisProperties.getPassword()));
        config.setDatabase(this.redisProperties.getDatabase());
        return config;
    }

创建RedisConnectionFactory 工厂

  public RedisConnectionFactory redisConnectionFactory(){
        JedisClientConfiguration clientConfiguration = getJedisClientConfiguration();
//        if (getSentinelConfig() != null) {
//            return new JedisConnectionFactory(getSentinelConfig(), clientConfiguration);
//        }
//        if (getClusterConfiguration() != null) {
//            return new JedisConnectionFactory(getClusterConfiguration(),
//                    clientConfiguration);
//        }
      return new JedisConnectionFactory(getStandaloneConfig(), clientConfiguration);
  }

**说明 **

学习spring boot配置时得运用,以上代码来自官网源码。其他配置看參考spring