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

网友投稿 306 2022-12-29


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 Phttp://assword

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微服务网关做jwt认证(jwt 网关)
下一篇:SpringMVC上传图片代码实例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~