使用redis3.2.8 建立集群后,发现在连接redis 经常报连接失败。但是单独连接某个节点时,是不会报错的,经过分析终于发现了原因。
原因是这样的:我在建立集群的时候配置文件redis.conf 中
bind 127.0.0.1 192.168.6.24
在使用命令:./redis-trib.rb create --replicas 1 192.168.6.24:7000 192.168.6.24:7001 192.168.6.24:7002 192.168.6.24:7003 192.168.6.24:7004 192.168.6.24:7005
建立集群,建立完集群后,连接redis 发现有问题,后把rdis.conf 中改为:bind 192.168.6.24
所以客户端有时候会连接 127.0.0.1:****,所以就报错了。
如何解决这个问题呢:
1.删除nodes-700*.conf ,appendonly.aof , dump.rdb 这三个文件
2.启动服务
[root@yunboce redis]# ./redis-server 7000/redis.conf
[root@yunboce redis]# ./redis-server 7001/redis.conf
[root@yunboce redis]# ./redis-server 7002/redis.conf
[root@yunboce redis]# ./redis-server 7003/redis.conf
[root@yunboce redis]# ./redis-server 7004/redis.conf
[root@yunboce redis]# ./redis-server 7005/redis.conf
3.执行建群命令:
./redis-trib.rb create --replicas 1 192.168.6.24:7000 192.168.6.24:7001 192.168.6.24:7002 192.168.6.24:7003 192.168.6.24:7004 192.168.6.24:7005
4.测试:
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPool;
public class JedisClusterTest {
JedisCluster jedisCluster = null;
private String nameKey="test1";
/**
* 因为是测试,这里没有写单例
*/
public void before(){
//注意:这里超时时间不要太短,他会有超时重试机制。而且其他像httpclient、dubbo等RPC框架也要注意这点
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
// config.setMaxIdle(200);
// config.setMaxTotal(300);
// config.setTestOnReturn(true);
Set<HostAndPort> nodes = new HashSet<HostAndPort>();
nodes.add(new HostAndPort("192.168.6.24",7000));
nodes.add(new HostAndPort("192.168.6.24",7001));
nodes.add(new HostAndPort("192.168.6.24",7002));
nodes.add(new HostAndPort("192.168.6.24",7003));
nodes.add(new HostAndPort("192.168.6.24",7005));
nodes.add(new HostAndPort("192.168.6.24",7004));
jedisCluster = new JedisCluster(nodes, 10000, 1000, 1,
config);
System.out.println(jedisCluster+"===");
for(int i=0;i<1;i++){
System.out.println(jedisCluster.set("test1"+i, "张三"+i));
System.out.println(jedisCluster.get("test1"+i));
}
}
public TreeSet<String> keys(String pattern){
// logger.debug("Start getting keys...");
TreeSet<String> keys = new TreeSet<String>();
Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();
for(String k : clusterNodes.keySet()){
System.out.println("Getting keys from: {}"+k);
JedisPool jp = clusterNodes.get(k);
Jedis connection = jp.getResource();
try {
Set<String> str = connection.keys(pattern);
System.out.println(str.toString());
keys.addAll(str);
} catch(Exception e){
// logger.error("Getting keys error: {}", e);
} finally{
System.out.println("Connection closed.");
connection.close();//用完一定要close这个链接!!!
}
}
return keys;
}
public static void main(String[] args) {
JedisClusterTest test = new JedisClusterTest();
test.before();
TreeSet<String> t = test.keys("*");
}
}
分享到:
相关推荐
Redis高可用集群Redis Cluster搭建是 Redis 官方推荐的高可用性解决方案,于 3.0 版本推出。Redis Cluster 的主要用途是实现数据分片(Data Sharding),同时也可以实现高可用(HA)。与 Redis Sentinel 模式相比,...
RedisCluster集群(Spring访问Redis),初学者实例源码
个人测试redis cluster spring整合代码 的demo
redisCluster集群demo,java语言用于获取Redis集群的数据连接池并获取数据。
Redis Cluster主要特性和设计,Redis Cluster主要特性和设计
支持codis迁移数据到redis 支持codis迁移数据到redis cluster 支持redis迁移数据到redis 支持redis迁移数据到codis 支持增量同步数据
我在做redis cluster的时候发现,两节点的cluster在处理断网或单节点故障时,会出现脑裂情况,为此,我做了实验去测试redis cluster配置的最佳方式,本文包含了测试的全过程。
RedisCluster 集群搭建文件RedisCluster 集群搭建文件RedisCluster 集群搭建文件
Redis Cluster 是 Redis 的一个高可用解决方案,通过将多个 Redis 节点组合成集群,提高 Redis 的可用性和性能。 环境准备 在开始部署 Redis Cluster 之前,需要准备 3 台服务器,每台服务器上需要安装 Redis ...
redis cluster配置文件,配置后的参考; 创建目录: mkdir -p /etc/redis-cluster mkdir -p /var/log/redis mkdir -p /var/redis/7001 mkdir -p /var/redis/7002 拷贝配置文件: cp /usr/local/redis-3.2.8/redis....
Windows下安装部署redis cluster,亲测好使,包含 安装环境,redis-3.2.1.gem,redis cluster集群实例
集群版redis,使用MySQL数据库,里面有批处理的SQL,性能十分卓越,单机版经供参考,抛转引玉,doc中包含数据库文件
JFinal 对redis的支持只有 主从集群的,并没有cluster集群的插件。作者照着主从集群的样式,自己写了一个,不是很完善。但是可以用。 附带连接池和jedis包
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/...
6389为6379的从节点,6390为6380的从节点,6391为6381的从节点。三主三从,下载完了修改bind dir masterauth cluster
Redis Cluster 是一种高可用性的分布式存储解决方案,它可以自动检测节点故障并进行故障转移,确保集群的可用性。下面将详细介绍 Redis Cluster 集群故障转移机制的工作原理。 集群故障转移机制 Redis Cluster ...
redis客户端连接工具 redis客户端连接工具 redis客户端连接工具
redis3.0版本cluster安装部署配置和管理,样例演示, 集群操作常用命令 CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。 Redis集群并 不支持处理多个keys... 本文,是我自己写的Redis Cluster集群搭建和配置详细步骤,包含了常用的Redis配置文件,和节点的管理等,以供大家参考.