spring集成 JedisCluster 连接 redis3.0 集群详解编程语言
2023-06-13 09:11:51 时间
最近在公司做了 jedisCluster整合spring 的配置, 分享如下
客户端采用最新的jedis 2.7
1.
maven依赖:
dependency groupId redis.clients /groupId artifactId jedis /artifactId version 2.7.2 /version /dependency
2.
增加spring 配置
/property property name="addressKeyPrefix" value="address" / !-- 属性文件里 key的前缀 -- property name="timeout" value="300000" / property name="maxRedirections" value="6" / property name="genericObjectPoolConfig" ref="genericObjectPoolConfig" / /bean
3.
增加connect-redis.properties 配置文件
这里配置了6个节点
address1=172.16.23.27:6379 address2=172.16.23.27:6380 address3=172.16.23.27:6381 address4=172.16.23.27:6382 address5=172.16.23.27:6383 address6=172.16.23.27:6384
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 JedisCluster , 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;
Set HostAndPort haps = new HashSet HostAndPort (); 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 HostAndPort 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;
参考:http://xyqck163.iteye.com/blog/2211108
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/19454.html
cjava相关文章
- spring boot拦截器和过滤器_java拦截器的作用
- 玩转 Spring Boot 集成篇(Redis)(四)
- Spring MVC框架:第九章:文件上传
- 面试突击84:Spring 有几种事务隔离级别?
- Spring batch教程 之 spring batch简介
- 重试框架 Spring-Retry 和 Guava-Retry,你知道该怎么选吗?
- Spring计时器StopWatch使用
- 使用Maven创建Spring Boot应用及运行
- Spring Cloud Alibaba:将 Sentinel 熔断限流规则持久化到 Nacos 配置中心
- Spring Webflux - 03 Webflux编程模型
- 一个用来深度学习并实战 Spring Boot 的项目,共 66 个集成demo
- Spring boot项目集成security
- 手写一个简化版的 Spring Cloud!
- Spring循环依赖-spring源码详解(四)
- 【SCT】Spring Cloud Tencent Polaris Context
- 软件测试|后端web开发框架——Spring Boot
- 在云服务器上搭建个人版chatGPT及后端Spring Boot集成chat GPT教程
- Spring Cloud Config 与其他组件集成(二)
- Spring Cloud Sleuth与Prometheus集成
- Spring Cloud LoadBalancer 的监控示例
- Spring Cloud Task 集成Spring Cloud Task Batch(四)
- Dubbo使用例子并且和Spring集成使用详解架构师
- Spring详解(二)——IOC控制反转编程语言
- Activiti工作流与spring集成详解编程语言
- Spring Bean的生命周期详解编程语言
- spring Boot(十九):使用Spring Boot Actuator监控应用详解编程语言
- Spring Boot(十八):使用Spring Boot集成FastDFS详解编程语言
- Spring Boot(五):spring data jpa的使用详解编程语言
- Spring系列之beanFactory与ApplicationContext详解编程语言
- SpringMVC+Spring+Mybatis框架集成详解编程语言
- OAuth2.1授权服务器Spring Authorization Server正式孵化成功进入Spring项目家族