spring starter连接redis

自定义spring starter连接redis

配置参数

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

/**
 * @author tonfu.chia
 * Created by  2019-06-21
 */
@Configuration
@Slf4j
@Data
public class JedisProperties {

    @Value("${bcs.redis.sentinel.master}")
    private String masterName;

    @Value("${bcs.redis.sentinel.nodes}")
    private String nodes;

    @Value("${bcs.redis.timeout}")
    private int timeout;

    @Value("${bcs.redis.pool.max-idle}")
    private int maxIdle;

    @Value("${bcs.redis.pool.max-wait-millis}")
    private long maxWaitMillis;

    @Value("${bcs.redis.pool.max-total}")
    private int maxTotal;

    @Value("${bcs.redis.pool.min-idle}")
    private int minIdle;

    @Value("${bcs.redis.password}")
    private String password;

}

初始化jedisPool,我这里是使用的哨兵集群模式,和普通连接有点区别

	@Bean
    public JedisSentinelPool bcsJedisSentinelPool() {

        String[] nodes = properties.getNodes().split(",");
        Set set = new HashSet<>(Arrays.asList(nodes));
        //        set.add("192.168.9.72:6389");
        //        set.add("192.168.9.73:6390");
        //        set.add("192.168.46.150:6387");
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(properties.getMaxIdle());
        jedisPoolConfig.setMinIdle(properties.getMinIdle());
        jedisPoolConfig.setMaxWaitMillis(properties.getMaxWaitMillis());
        jedisPoolConfig.setMaxTotal(properties.getMaxTotal());
        jedisPoolConfig.setTestOnBorrow(true);
        jedisPoolConfig.setTestOnReturn(true);
        jedisPoolConfig.setTestWhileIdle(true);
        JedisSentinelPool jedisSentinelPool =
                new JedisSentinelPool(properties.getMasterName(), set, jedisPoolConfig,
                        properties.getTimeout(), properties.getPassword());
        return jedisSentinelPool;
    }

连接redis,使用jedis客户端,每次使用时从pool里获取,使用后close掉。

 	@Autowired
    JedisSentinelPool jedisSentinelPool;
	
	/**
     * 执行
     */
    private void execute() {
        Jedis jedis = null;
        try {
            jedis = jedisSentinelPool.getResource();
            //执行redis命令,业务代码
        } catch (Exception e) {
        } finally {
            if (jedis != null) {
                jedis.close();
            }
        }
    }

写的比较跳跃,如果有什么需要了解的,可以给我留言,只是记录下工作中的代码片段。

你可能感兴趣的:(java,spring)