java集成redis集群_spring集成redis cluster详解
客户端采用最新的jedis 2.7
1.maven依赖:
redis.clients
jedis
2.7.3
2.增加spring 配置
classpath:connect-redis.properties
3.增加connect-redis.properties 配置文件
这里配置了6个节点
address1=*:*
address2=*:*
address3=*:*
address4=*:*
address5=*:*
address6=*:*
4.增加java类:
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import java.util.regex.Pattern;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.io.Resource;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
public class JedisClusterFactory implements FactoryBean, InitializingBean {
private Resource addressConfig;
private String addressKeyPrefix ;
private JedisCluster jedisCluster;
private Integer timeout;
private Integer maxRedirections;
private GenericObjectPoolConfig genericObjectPoolConfig;
private Pattern p = Pattern.compile("^.+[:]\\d{1,5}\\s*$");
@Override
public JedisCluster getObject() throws Exception {
return jedisCluster;
}
@Override
public Class extends JedisCluster> getObjectType() {
return (this.jedisCluster != null ? this.jedisCluster.getClass() : JedisCluster.class);
}
@Override
public Boolean isSingleton() {
return true;
}
private Set parseHostAndPort() throws Exception {
try {
Properties prop = new Properties();
prop.load(this.addressConfig.getInputStream());
Set haps = new HashSet();
for (Object key : prop.keySet()) {
if (!((String) key).startsWith(addressKeyPrefix)) {
continue;
}
String val = (String) prop.get(key);
Boolean isIpPort = p.matcher(val).matches();
if (!isIpPort) {
throw new IllegalArgumentException("ip 或 port 不合法");
}
String[] ipAndPort = val.split(":");
HostAndPort hap = new HostAndPort(ipAndPort[0], Integer.parseint(ipAndPort[1]));
haps.add(hap);
}
return haps;
}
catch (IllegalArgumentException ex) {
throw ex;
}
catch (Exception ex) {
throw new Exception("解析 jedis 配置文件失败", ex);
}
}
@Override
public void afterPropertiesSet() throws Exception {
Set haps = this.parseHostAndPort();
jedisCluster = new JedisCluster(haps, timeout, maxRedirections,genericObjectPoolConfig);
}
public void setAddressConfig(Resource addressConfig) {
this.addressConfig = addressConfig;
}
public void setTimeout(int timeout) {
this.timeout = timeout;
}
public void setMaxRedirections(int maxRedirections) {
this.maxRedirections = maxRedirections;
}
public void setAddressKeyPrefix(String addressKeyPrefix) {
this.addressKeyPrefix = addressKeyPrefix;
}
public void setGenericObjectPoolConfig(GenericObjectPoolConfig genericObjectPoolConfig) {
this.genericObjectPoolConfig = genericObjectPoolConfig;
}
}
5.到此配置完成
使用时,直接注入即可, 如下所示:
@Autowired
JedisCluster jedisCluster;
总结
以上就是本文关于spring集成redis cluster详解的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
java集成redis集群_spring集成redis cluster详解相关推荐
- 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解
前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...
- redis db0 到 db15_深入剖析Redis系列: Redis集群模式搭建与原理详解
前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...
- 高可用集群技术之corosync应用详解(一)
Corosync概述: Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等.它是一个新兴的软件,2008年推出,但其实它并不是一个真正意义 ...
- 第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor
第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor 环境 准备 安装python3.7.4 问题 解决方法 安装supervisor 配置supervisor服务 启 ...
- 第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI
第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI 介绍 安装 解压 安装依赖 修改配置 注册为系统服务 启动 登录一下,发现报错了 解决方法 介 ...
- redis集群模式--解决redis单点故障
redis单机版,出现单机故障后,导致redis无法使用,如果程序使用redis,间接导致程序出错. redis的集群模式: 1.主从复制模式 2.哨兵模式 3.集群化模式 主从复制模式 一主多从模式 ...
- Redis集群监控及Redis桌面客户端
之前在生产环境部署了Redis集群,一直苦于没有工具监控,最近找了下网上推荐redmon和Redislive的比较多,查看了两个项目的github,都几年没有更新,这两个项目应该没有人在维护了,如果哪 ...
- redis集群 + 哨兵 + zookeeper_Redis05——Redis Cluster 如何实现分布式集群
前面一片文章,我们已经说了Redis的主从集群及其哨兵模式.本文将继续介绍Redis的分布式集群. " 在高并发场景下,单个Redis实例往往不能满足业务需求.单个Redis数据量过大会 ...
- redis 集群环境搭建-redis集群管理
集群架构 (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群中超过半数的节点检测失效时才生效. (3)客户端与redi ...
最新文章
- 模组使用之dB、dBm、dBw、dBu、dBc的含义和之间的关系
- SQL Server 下的 获取当月最后一天
- 重磅 | 数据库自治服务DAS论文入选全球顶会SIGMOD
- SQL Server 用表中已有数据造数据
- 服务器windows模拟linux环境,科学网—Windows不用虚拟机或双系统,轻松实现shell环境:gitforwindows - 刘永鑫的博文...
- 关于长寿_FreeCodeCamp可以帮助您更长寿
- java里的多线程同步机制
- tensorflow 调试_如何开始调试TensorFlow
- bootstrap+masonry.js写瀑布流
- Java 算法 面试
- linux中rlwrap安装
- python学习交流 - 匿名函数
- 四种引用类型:强、软、弱、虚
- heic转换成jpg,学会这个方法就够了
- 被问到最多的淘口令API调用方法
- Inno Setup打包教程
- 呕心沥血互联网产品经理巨作
- 漫话:如何给女朋友解释什么是CDN?
- Chrome 地址栏 Google 搜索错误处理 隐私设置错误 您的连接不是私密连接
- SAP ABAP 解析 excel 文件的函数 TEXT_CONVERT_XLS_TO_SAP 单步执行分析
热门文章
- 【Matlab 控制】多智能体一致性收敛仿真
- 1.14 梯度检验应用的注意事项-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- PUTTY登录树莓派Network error:Software caused connection abort
- 【PC工具】推荐在线流程图绘制工具,免费云存储流程图绘制,可直接粘贴图片...
- 【PC工具】常用USB转串口芯片CH340G,驱动安装有可能遇到的问题及解决办法
- CentOS7.1 KVM虚拟化之虚拟机添加磁盘
- 腾讯云服务器部署FTP
- JMeter 分布式性能测试
- 基于Shibbloet实现的SSO单点登录
- Linux下磁盘IO读写性能测试脚本