Java调用Redis集群代码及问题解决
程序员文章站
2022-06-29 13:25:23
前言
需要使用以下jar包
maven项目引用以下配置:
org.apache.c...
前言
需要使用以下jar包
maven项目引用以下配置:
<dependency> <groupid>org.apache.commons</groupid> <artifactid>commons-pool2</artifactid> <version>2.6.2</version> </dependency> <dependency> <groupid>redis.clients</groupid> <artifactid>jedis</artifactid> <version>3.0.1</version> </dependency> <dependency> <groupid>org.slf4j</groupid> <artifactid>slf4j-api</artifactid> <version>1.7.26</version> </dependency> <dependency> <groupid>org.slf4j</groupid> <artifactid>slf4j-simple</artifactid> <version>1.7.26</version> <scope>test</scope> </dependency>
代码
package main; import java.io.ioexception; import java.util.linkedhashset; import java.util.set; import redis.clients.jedis.hostandport; import redis.clients.jedis.jedis; import redis.clients.jedis.jediscluster; import redis.clients.jedis.jedispoolconfig; @suppresswarnings("all") public class redismain { public static void main(string[] args) { jediscluster cluster =null; try { set<hostandport> nodes = new linkedhashset<hostandport>(); //一般选用slaveof从ip+端口进行增删改查,不用master nodes.add(new hostandport("外网ip", 7003)); nodes.add(new hostandport("外网", 7004)); nodes.add(new hostandport("外网ip", 7004)); // jedis连接池配置 jedispoolconfig jedispoolconfig = new jedispoolconfig(); // 最大空闲连接数, 默认8个 jedispoolconfig.setmaxidle(100); // 最大连接数, 默认8个 jedispoolconfig.setmaxtotal(500); //最小空闲连接数, 默认0 jedispoolconfig.setminidle(0); // 获取连接时的最大等待毫秒数(如果设置为阻塞时blockwhenexhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1 jedispoolconfig.setmaxwaitmillis(2000); // 设置2秒 //对拿到的connection进行validateobject校验 jedispoolconfig.settestonborrow(true); //未设置auth password jediscluster jedis = new jediscluster(nodes, jedispoolconfig); //设置auth password //jediscluster jedis = new jediscluster(nodes,5000,3000,10,{auth_password}, new jedispoolconfig()); system.out.println(jedis.get("mykey")); }catch(exception e) { e.printstacktrace(); }finally { if(null !=cluster) cluster.close(); } } }
可能出现的异常
1、denied redis is running in protected mode because protected mode is enabled...
解决方法:redis.conf默认禁止外网访问,修改”protected-mode yes”为“protected-mode no”
2、no more cluster attempts left.
解决方法:redis设置集群时,服务器没有配置开启集群总线端口(redis端口+10000),如果redis-cli端口有7000-7005,则集群总线端口为17000-17005,服务器7000-70005、17000-17005端口都要打开
3、no reachable node in cluster
解决方法:查看redis.conf 的 "bind xxxxxxx" 是否限制了ip访问,注销bind则可以任意ip访问服务器redis
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: 西安美食介绍,让你了解不可多得的西安美食
推荐阅读
-
java Timer测试定时调用及固定时间执行代码示例
-
Redis 哨兵高模式搭建及Java代码配置
-
Java调用Redis集群代码及问题解决
-
android平台下phonegap java插件开发及javascript(js)调用java代码
-
android平台下phonegap java插件开发及javascript(js)调用java代码
-
Redis 哨兵高模式搭建及Java代码配置
-
Java Spring mvc 操作 Redis 及 Redis 集群
-
redis集群的实现及使用php进行调用
-
Java Spring mvc 操作 Redis 及 Redis 集群
-
redis集群的实现及使用php进行调用