redis3.0 集群实战3 - java编程实战
2016-08-26 00:40
525 查看
本文主要描述使用jedis进行redis-cluster操作
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:
实际使用:
JedisCluster里主要有两个成员变量:maxRedirections和connectionHandler。
因此在调用RedisCluster对象时,直接使用JedisCluster对象即可,比如在调用JedisCluster.set时:
同时在new JedisCluster的时候,还可以传入timeout参数,这里的timeout表示从redis-server读取数据的超时时间,默认的是2s,当数据量比较大的时候,可以考虑增大timeout。
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。
相关文章推荐
- redis3.0 集群实战2 - 集群功能实战
- redis3.0 集群实战1 -- 安装和配置
- redis 慢日志 slowlog
- redis安装与使用
- redis集群出现JedisNoReachableClusterNodeException异常(No reachable node in cluster)
- redis常用命令及安全Redis集群环境搭建
- redis安装包-linux v3.0.5免费版
- CentOS 6.5 下安装 Redis 3.0.7
- Logstash2.3.4趟坑之集成Redis哨兵模式
- [常见问题]在Linux下执行Redis命令不起作用.
- Redis的介绍及使用实例.
- ubuntu 下面 redis 安装和配置
- redis常用知识(二)
- redis常用知识总结(一)
- Redis 源码分析:dict.c 和 dict.h
- Redis 用户验证
- Redis protected-mode
- linux 配置redis集群
- 【无私分享:ASP.NET CORE 项目实战(第十一章)】Asp.net Core 缓存 MemoryCache 和 Redis
- CodeIgniter框架源码笔记(15)——SESSION之Redis驱动实现