栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

代码

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 nodes = new linkedHashSet();
 //一般选用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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/137178.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号