redis3.0 集群实战3 - java编程实战

本文主要描述使用jedis进行redis-cluster操作

jedis

jedis是redis官方推荐使用的java redis客户端,github地址为,https://github.com/xetorthio/jedis,本文使用jedis进行redis集群的操作。 
jedis从2.3.0版本后开始支持redis cluster,不过看官方的released文档(https://github.com/xetorthio/jedis/releases)在2.3.0版本后的每个版本都会修复一些cluster相关的bug,基本上在2.6.3版本后,才开始没有cluster相关的bug,所以建议jedis版本至少大于2.6.3.目前最新版本是2.7.2.

maven:

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>

hello world

jedis官方推荐的helloworld:

Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
//Jedis Cluster will attempt to discover cluster nodes automatically
jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7379));
JedisCluster jc = new JedisCluster(jedisClusterNodes);
jc.set("foo", "bar");
String value = jc.get("foo");

实际使用:

private void genClusterNode() {
    clusterNodes = new HashSet<HostAndPort>();
    clusterNodes.add(new HostAndPort("192.168.137.10", 7000));
    clusterNodes.add(new HostAndPort("192.168.137.10", 7001));
    clusterNodes.add(new HostAndPort("192.168.137.10", 7002));
    clusterNodes.add(new HostAndPort("192.168.137.10", 7003));
    clusterNodes.add(new HostAndPort("192.168.137.10", 7004));
    clusterNodes.add(new HostAndPort("192.168.137.10", 7005));
}

private void genJedisConfig() {
    config = new JedisPoolConfig();
    config.setMaxTotal(1000);
    config.setMaxIdle(100);
    config.setTestOnBorrow(true);
}

public void clusterInit() {
    genClusterNode();
    genJedisConfig();
    jedisCluster = new JedisCluster(clusterNodes, 5000, config);
}

private void clusterSetKey(String key, String value) {
    jedisCluster.set(key, value);
}

解读

JedisCluster是jedis封装的关于redis cluster操作的class。 
JedisCluster里主要有两个成员变量:maxRedirections和connectionHandler。

maxRedirections:
    - 重试次数,在执行失败后,进行的重试次数,默认是5,
connectionHandler:
    - cluster里面的连接管理者
    - 包括JedisClusterInfoCache,里面会缓存nodes和slots的信息,同时对于各个nodes和slots会缓存一个JedisPool

因此在调用RedisCluster对象时,直接使用JedisCluster对象即可,比如在调用JedisCluster.set时:

- JedisCluster会从connectionHandler基于key找出对应的SLOTS和NODES,并找出对应的JedisPool对象
- 从JedisPool对象中找出可用的Jedis实例,执行Jedis对应的set操作

同时在new JedisCluster的时候,还可以传入timeout参数,这里的timeout表示从redis-server读取数据的超时时间,默认的是2s,当数据量比较大的时候,可以考虑增大timeout。

时间: 2024-08-24 09:55:10

redis3.0 集群实战3 - java编程实战的相关文章

Redis3.0集群方案分析

在Redis3.0集群出来之前,大家都对作者antirez寄予厚望,因为Redis从来没有让我们失望过.现在Redis3.0集群出来了,网上出了很多评论文章,都说他的功能多么强大,包括下面这张图是彻底把我欺骗了. 等到我把Redis3.0客户端库hiredis编译好集成到公司系统,访问其中一台Redis3.0服务器居然返回"MOVED 2318 10.12.8.156:6379",这才了解到访问其他Redis3.0服务器的Key需要二次定位,这就是Redis3.0所谓的ASK 转向/M

Redis3.0 集群

1  Redis3.0集群 Redis3.0之前项目架构

redis3.0集群部署方案

redis3.0集群部署方案redis1:192.168.1.10:6379       192.168.1.10:6380redis2:192.168.1.11:6379       192.168.1.11:6380redis3:192.168.1.12:6379       192.168.1.12:6380关闭 selinux ,防火墙允许6379 6380端口通过, 先启动各服务器的redis节点在制作集群       redis1配置:yum -y insall gcc ruby r

redis3.0集群说明与搭建

Redis3.0集群说明: 1.  Redis集群提供一种运行Redis的方式,数据被自动的分片到多个Redis节点. 2. 集群不支持处理多个键的命令,因为这需要在Redis节点间移动数据,使得                 Redis集群不能提供像Redis单点那样的性能,在高负载下会表现得不可预知. 3.  集群可在多个节点间自动拆分数据集. 当部分节点正在经历失败或者不能与集群其他节点通信时可继续运转 4 Redis集群不保证数据强一致性. redis-server 集群以哈希槽的方式

redis3.0集群部署和测试

redis3.0集群部署和测试 环境介绍 两台Centos7的虚拟机模拟6个节点,A台3个master节点,B台3个slave节点A地址:172.16.81.140B地址:172.16.81.141redis版本:redis-3.2.4 部署前准备 关闭防火墙--->systemctl stop firewalld开机禁用防火墙--->systemctl disable firewalld临时关闭selinux--->setenforce 0永久关闭selinux--->sed -

redis3.0 集群实战1 -- 安装和配置

本文主要是在centos7上安装和配置redis集群实战 参考: http://hot66hot.iteye.com/blog/2050676 集群教程: http://redisdoc.com/topic/cluster-tutorial.html#id2 1 安装准备 1.1 下载redis3.0版本 到redis官网redis.io或者redis中文官网www.redis.cn上(http://www.redis.cn/download.html)去下载最新的版本,我下载的是redis3.

redis3.0 集群实战2 - 集群功能实战

1 集群基本操作 1.1 查看当前集群状态 使用redis-trib.rb check功能查看对应的节点的状态: [[email protected] bin]# ./redis-trib.rb check 127.0.0.1:7000 Connecting to node 127.0.0.1:7000: OK Connecting to node 127.0.0.1:7002: OK Connecting to node 127.0.0.1:7001: OK Performing Cluste

redis3.0集群搭建

Redis集群搭建 redis cluster介绍 节点自动发现.集群容错slave选举.Cluster管理.集群配置管理. 集群中的每个Redis节点需要2个TCP连接端口,如6379端口用于Client连接,16379端口用于集群数据通信 集群采用Hash Slot方案,而不是一致性哈希,共16384个Hashslot.如果有3台机器,那么NodeA在0-5500,NodeB 在5501-11000,NodeC在11001-16384.这种设计下,添加,删除新Node比较方便. 由于Hash

redis3.0集群安装部署

wget http://download.redis.io/releases/redis-3.0.0.tar.gz && tar zxvf redis-3.0.0.tar.gz && cd redis-3.0.0 && make PREFIX=/usr/local/redis install mkdir -p /usr/local/redis/run mkdir -p /usr/local/redis/logs mkdir -p /usr/local/red