Java调用Redis集群代码及问题解决
前言
需要使用以下jar包
Maven项目引用以下配置:
org.apache.commons commons-pool2 2.6.2 redis.clients jedis 3.0.1 org.slf4j slf4j-api 1.7.26 org.slf4j slf4j-simple 1.7.26 test
代码
packageMain; importjava.io.IOException; importjava.util.LinkedHashSet; importjava.util.Set; importredis.clients.jedis.HostAndPort; importredis.clients.jedis.Jedis; importredis.clients.jedis.JedisCluster; importredis.clients.jedis.JedisPoolConfig; @SuppressWarnings("all") publicclassRedisMain{ publicstaticvoidmain(String[]args){ JedisClustercluster=null; try{ Setnodes=newLinkedHashSet (); //一般选用slaveof从IP+端口进行增删改查,不用master nodes.add(newHostAndPort("外网IP",7003)); nodes.add(newHostAndPort("外网",7004)); nodes.add(newHostAndPort("外网IP",7004)); //Jedis连接池配置 JedisPoolConfigjedisPoolConfig=newJedisPoolConfig(); //最大空闲连接数,默认8个 jedisPoolConfig.setMaxIdle(100); //最大连接数,默认8个 jedisPoolConfig.setMaxTotal(500); //最小空闲连接数,默认0 jedisPoolConfig.setMinIdle(0); //获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常,小于零:阻塞不确定的时间,默认-1 jedisPoolConfig.setMaxWaitMillis(2000);//设置2秒 //对拿到的connection进行validateObject校验 jedisPoolConfig.setTestOnBorrow(true); //未设置authPassword JedisClusterjedis=newJedisCluster(nodes,jedisPoolConfig); //设置authPassword //JedisClusterjedis=newJedisCluster(nodes,5000,3000,10,{auth_password},newJedisPoolConfig()); System.out.println(jedis.get("mykey")); }catch(Exceptione){ e.printStackTrace(); }finally{ if(null!=cluster) cluster.close(); } } }
可能出现的异常
1、DENIEDRedisisrunninginprotectedmodebecauseprotectedmodeisenabled...
解决方法:redis.conf默认禁止外网访问,修改”protected-modeyes”为“protected-modeno”
2、Nomoreclusterattemptsleft.
解决方法:redis设置集群时,服务器没有配置开启集群总线端口(redis端口+10000),如果redis-cli端口有7000-7005,则集群总线端口为17000-17005,服务器7000-70005、17000-17005端口都要打开
3、Noreachablenodeincluster
解决方法:查看redis.conf的"bindxxxxxxx"是否限制了IP访问,注销bind则可以任意IP访问服务器Redis
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。