博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis(四):Spring + JedisCluster操作Redis(集群)
阅读量:4306 次
发布时间:2019-06-06

本文共 3905 字,大约阅读时间需要 13 分钟。

1.maven依赖:

redis.clients
jedis
2.7.3

2.增加spring 配置

classpath:redis-nodes.properties

3.增加connect-redis.properties 配置文件

这里配置了6个节点

address1=192.168.221.128:7000  address2=192.168.221.128:7001  address3=192.168.221.128:7002  address4=192.168.221.129:7003  address5=192.168.221.129:7004  address6=192.168.221.129:7005

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
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;

转载于:https://www.cnblogs.com/yifanSJ/p/9105958.html

你可能感兴趣的文章
BigDecimal正确使用了吗?
查看>>
joplin笔记
查看>>
JNDI+springmvc使用
查看>>
vue+springboot分页交互
查看>>
vue+springboot打包发布
查看>>
XSL 开发总结
查看>>
beta阶段第六次scrum meeting
查看>>
SpringBoot+MybatisPlus实现批量添加的两种方式
查看>>
vue 设计结构
查看>>
Sqlerver2005+按照ID分组取前几条
查看>>
Python的编码和解码
查看>>
docker
查看>>
停车场系统安全岛设计施工要求
查看>>
Docker实战
查看>>
asp.net core结合Gitlab-CI实现自动化部署
查看>>
RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.7 版本发布
查看>>
EasyNVR H5无插件摄像机直播解决方案前端解析之:关于直播页面和视频列表页面切换的问题...
查看>>
django搭建一个小型的服务器运维网站-拿来即用的bootstrap模板
查看>>
redis事务
查看>>
Java_基础语法之dowhile语句
查看>>