redis 实战 java版本_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:

redis.clients

jedis

2.7.2

jar

compile

hello world

jedis官方推荐的helloworld:

Set jedisClusterNodes = new HashSet();

//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();

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值