• 连接Redis集群


    1.配置集群设置

     https://www.cnblogs.com/9080dlb/p/15729558.html

    2.导包

        <dependency>
             <groupId>redis.clients</groupId>
             <artifactId>jedis</artifactId>
             <version>3.6.3</version>
         </dependency>

    3工具类

    import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
    import redis.clients.jedis.*;
    
    import java.util.HashSet;
    //集群配置
    public class RedisClusterUtils {
    
        //集群密码
        private static String AUTH = "xxxxxx";
    
        private static JedisCluster jedisCluster = null;
    
        static {
            /**
             * 2.9.0及以后的jar包中,没有setMaxActive和setMaxWait属性了
             * maxActive----maxTotal
             * maxWait---maxWaitMillis
             */
            //池配置
            GenericObjectPoolConfig<Jedis> poolConfig = new GenericObjectPoolConfig<Jedis>();
            //最大连接数, 默认8个,赋值为-1 则表示不受限制
            //如果连接数为设置的值,此时状态为exhausted耗尽
            poolConfig.setMaxTotal(1000);
            //最大空闲连接数, 默认8个,控制空闲状态数量,最多为设置的值
            poolConfig.setMaxIdle(50);
            //获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted)
            // 如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1永不超时
            poolConfig.setMaxWaitMillis(1000);
            //在获取连接的时候检查有效性, 默认false
            poolConfig.setTestWhileIdle(true);
            //在用一个redis实例时,是否提前进行验证操作
            //如果为TRUE,则得到的实例都是可用的
            poolConfig.setTestOnBorrow(true);
            //是否进行有效性检查
            poolConfig.setTestOnReturn(true);
    
            //节点信息
            HashSet<HostAndPort> set = new HashSet<HostAndPort>();
            set.add(new HostAndPort("4x.xx.xx.xx", 6379));//1-m
            set.add(new HostAndPort("4x.xxx.xx.xx", 6380));//1-s
            set.add(new HostAndPort("4x.xx.xx.xx",6379));//l-m
            set.add(new HostAndPort("4x.x.xxx.xx",6380));//l-s
            set.add(new HostAndPort("4x.xx.xx.xx",6379));//d-m
            set.add(new HostAndPort("4x.xx.xx.xx",6380));//d-s
            /**
             * 参数1 redis节点信息
             * 参数2 连接超时
             * 参数3 读写超时
             * 参数4 重试次数
             * 参数5 集群密码
             * 参数6 连接池参数
             */
            jedisCluster = new JedisCluster(set, 5000, 5000, 5, AUTH, poolConfig);
            /**
             * 重试次数,JedisCluster在连接的时候,如果出现连接错误,则会尝试随机连接一个节点,
             * 如果当期尝试的节点返回Moved重定向,jedis cluster会重新更新clots缓存。
             * 如果重试依然返回连接错误,会接着再次重试,
             * 当重试次数大于maxAttempts会报出
             * Jedis ClusterMaxRedirectionsException(“to many Cluster redireciotns?”)异常
             */
        }
    
        /**
         *
         * @return
         */
        public static JedisCluster getJRedis(){
            if (jedisCluster!=null){
                return jedisCluster;
            }
            return null;
        }
    }

    4.测试

     public static void main(String[] args) {
            JedisCluster jedis = RedisClusterUtils.getJRedis();
            if (jedis!=null){
                System.out.println("正常");
                jedis.set("user","张三");
                System.out.println("user = " + jedis.get("user"));
            }
        }
  • 相关阅读:
    linux sort根据日期时间排序方法记录
    gitlab数据迁移与升级记录
    ubuntu加压7z分卷
    docker环境运行elasticsearch以及汉化运行kibana
    nginx 403错误 检查nginx.conf user有没有问题,最好是当前用户
    系统属性file.encoding在JVM启动后,再次设置无法对系统的默认编码造成影响 & sun.jnu.encoding
    IDEA快速选择提示代码的设置
    log4j2可以打印到控制台,但无法打印到文件
    IDEA快捷键
    Eclipse自定义快捷键
  • 原文地址:https://www.cnblogs.com/9080dlb/p/15731057.html
Copyright © 2020-2023  润新知