当前位置: 移动技术网 > IT编程>开发语言>Java > Java调用Redis集群代码及问题解决

Java调用Redis集群代码及问题解决

2019年09月07日  | 移动技术网IT编程  | 我要评论

前言

需要使用以下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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网