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。
redis3.0 集群实战3 - java编程实战的更多相关文章
- Redis3.0集群方案分析
在Redis3.0集群出来之前,大家都对作者antirez寄予厚望,因为Redis从来没有让我们失望过.现在Redis3.0集群出来了,网上出了很多评论文章,都说他的功能多么强大,包括下面这张图是彻底 ...
- Dubbo入门到精通学习笔记(十八):使用Redis3.0集群实现Tomcat集群的Session共享
文章目录 1.单节点访问http://192.168.1.61:8082/pay-web-boss/: 2.增加多一个消费者节点:192.168.1.62,以同样的方式部署pay-web-boss工程 ...
- redis3.0集群搭建
生产环境中准备使用redis3.0集群了,花了一天时间研究了一下,下面记录一下集群搭建的过程. 服务器规划: 192.168.116.129 7000,7003 192.168.116.130 ...
- redis3.0集群部署和测试
redis3.0集群部署和测试 环境介绍 两台Centos7的虚拟机模拟6个节点,A台3个master节点,B台3个slave节点A地址:172.16.81.140B地址:172.16.81.141r ...
- 模拟安装redis5.0集群并通过Java代码访问redis集群
在虚拟机上模拟redis5.0的集群,由于redis的投票机制,一个集群至少需要3个redis节点,如果每个节点设置一主一备,一共需要六台虚拟机来搭建集群,此处,在一台虚拟机上使用6个redis实例来 ...
- Spring集成jedis支持Redis3.0集群
接着上一节,我们通过spring FactoryBean实现redis 3.0集群JedisCluster与spring集成. http://www.linuxidc.com/Linux/2016- ...
- redis3.0 集群实战1 -- 安装和配置
本文主要是在centos7上安装和配置redis集群实战 参考: http://hot66hot.iteye.com/blog/2050676 集群教程: http://redisdoc.com/to ...
- redis3.0 集群实战2 - 集群功能实战
1 集群基本操作 1.1 查看当前集群状态 使用redis-trib.rb check功能查看对应的节点的状态: [root@bogon bin]# ./redis-trib.rb check 1 ...
- CentOS完美搭建Redis3.0集群并附测试
线上的统一聊天和推送项目使用的是redis主从,redis版本2.8.6 redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口:slaveof ...
随机推荐
- 分享7款非常实用的jQuery/CSS3插件演示和源码
上次我们分享了15款效果很酷的最新jQuery/CSS3特效,非常不错,今天要分享7个非常实用的jQuery/CSS3插件演示和源码,一起来看看. 1.jQuery ajax点击地图显示商家网点分布 ...
- Android开发艺术探索笔记—— View(一)
Android开发艺术探索笔记 --View(一) View的基础知识 什么是View View是Android中所有控件的基类.是一种界面层控件的抽象. View的位置参数 参数名 获取方式 含义 ...
- CG
//设置线的宽度 CGContextSetLineWidth(ctx, 12); //设置线的连接处 (拐点) CGContextSetLineJoin(ctx, kCGLineJoinRound ) ...
- TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序
文章转自:http://www.luocs.com/archives/464.html 此文版权归作者 – yaogang所有,转载请注明yaogang©www.luocs.com. Luocs说:这 ...
- SNF开发平台WinForm之十-Excel导入-SNF快速开发平台3.3-Spring.Net.Framework
7.1运行效果: 2.Excel导入开发实现 2.1. 创建窗体,修改命名空间 新增的窗体命名“FrmImport表名”,这个导入窗口比较其它窗口会特殊一些,需要继承BaseFormImport父级窗 ...
- C#通过ODBC查询HANA数据库数据
创建HANA的ODBC数据库连接. 默认在控制面板——>管理工具——>数据源(ODBC) 提示:如果系统是64位的,要运行 C:\Windows\SysWOW64\odbcad32.exe ...
- 不同gdb,相同数据集合并
众所周知,数据处理是GIS中一项重要且繁琐的工作,处理数据的工具和方法也太多了,在做数据处理的时候,经常会遇到这样的问题:对存储在不同gdb中.并且数据集名称相同的数据进行合并处理: 如图:数据组织如 ...
- Metatable和Metamethod
Metatable和Metamethod是用来干啥的?它们可以使得表a和b的表达式“a + b”变得有意义,其中metatable使两个不相关的表a和b之间可以进行操作,而操作的具体行为比如说&quo ...
- java中反射机制通过字节码文件对象获取字段和函数的方法
pclass = Class.forName("get_class_method.Person"); //Field ageField = pclass.getField(&quo ...
- 关于VR技术和未来发展---转
原文地址:http://mp.weixin.qq.com/s?__biz=MzA4MTIwNTczMQ==&mid=2651345594&idx=3&sn=2741ab7321 ...