`
m635674608
  • 浏览: 5027513 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

spring集成 JedisCluster 连接 redis3.0 集群

 
阅读更多

客户端采用最新的jedis 2.7

1.

maven依赖:

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.7.2</version>

</dependency>

 

2.

增加spring 配置

Java代码  收藏代码
  1. <bean name="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig" >  
  2.         <property name="maxWaitMillis" value="-1" />  
  3.         <property name="maxTotal" value="1000" />  
  4.         <property name="minIdle" value="8" />  
  5.         <property name="maxIdle" value="100" />  
  6. </bean>  
  7.   
  8. <bean id="jedisCluster" class="xxx.JedisClusterFactory">  
  9.     <property name="addressConfig">  
  10.         <value>classpath:connect-redis.properties</value>  
  11.     </property>  
  12.     <property name="addressKeyPrefix" value="address" />   <!--  属性文件里  key的前缀 -->  
  13.       
  14.     <property name="timeout" value="300000" />  
  15.     <property name="maxRedirections" value="6" />  
  16.     <property name="genericObjectPoolConfig" ref="genericObjectPoolConfig" />  
  17. </bean>  

 

3.

增加connect-redis.properties  配置文件

这里配置了6个节点

Java代码  收藏代码
  1. address1=172.16.23.27:6379  
  2. address2=172.16.23.27:6380  
  3. address3=172.16.23.27:6381  
  4. address4=172.16.23.27:6382  
  5. address5=172.16.23.27:6383  
  6. address6=172.16.23.27:6384  

 

4.

增加java类:

Java代码  收藏代码
  1. import java.util.HashSet;  
  2. import java.util.Properties;  
  3. import java.util.Set;  
  4. import java.util.regex.Pattern;  
  5.   
  6. import org.apache.commons.pool2.impl.GenericObjectPoolConfig;  
  7. import org.springframework.beans.factory.FactoryBean;  
  8. import org.springframework.beans.factory.InitializingBean;  
  9. import org.springframework.core.io.Resource;  
  10.   
  11. import redis.clients.jedis.HostAndPort;  
  12. import redis.clients.jedis.JedisCluster;  
  13.   
  14. public class JedisClusterFactory implements FactoryBean<JedisCluster>, InitializingBean {  
  15.   
  16.     private Resource addressConfig;  
  17.     private String addressKeyPrefix ;  
  18.   
  19.     private JedisCluster jedisCluster;  
  20.     private Integer timeout;  
  21.     private Integer maxRedirections;  
  22.     private GenericObjectPoolConfig genericObjectPoolConfig;  
  23.       
  24.     private Pattern p = Pattern.compile("^.+[:]\\d{1,5}\\s*$");  
  25.   
  26.     @Override  
  27.     public JedisCluster getObject() throws Exception {  
  28.         return jedisCluster;  
  29.     }  
  30.   
  31.     @Override  
  32.     public Class<? extends JedisCluster> getObjectType() {  
  33.         return (this.jedisCluster != null ? this.jedisCluster.getClass() : JedisCluster.class);  
  34.     }  
  35.   
  36.     @Override  
  37.     public boolean isSingleton() {  
  38.         return true;  
  39.     }  
  40.   
  41.   
  42.   
  43.     private Set<HostAndPort> parseHostAndPort() throws Exception {  
  44.         try {  
  45.             Properties prop = new Properties();  
  46.             prop.load(this.addressConfig.getInputStream());  
  47.   
  48.             Set<HostAndPort> haps = new HashSet<HostAndPort>();  
  49.             for (Object key : prop.keySet()) {  
  50.   
  51.                 if (!((String) key).startsWith(addressKeyPrefix)) {  
  52.                     continue;  
  53.                 }  
  54.   
  55.                 String val = (String) prop.get(key);  
  56.   
  57.                 boolean isIpPort = p.matcher(val).matches();  
  58.   
  59.                 if (!isIpPort) {  
  60.                     throw new IllegalArgumentException("ip 或 port 不合法");  
  61.                 }  
  62.                 String[] ipAndPort = val.split(":");  
  63.   
  64.                 HostAndPort hap = new HostAndPort(ipAndPort[0], Integer.parseInt(ipAndPort[1]));  
  65.                 haps.add(hap);  
  66.             }  
  67.   
  68.             return haps;  
  69.         } catch (IllegalArgumentException ex) {  
  70.             throw ex;  
  71.         } catch (Exception ex) {  
  72.             throw new Exception("解析 jedis 配置文件失败", ex);  
  73.         }  
  74.     }  
  75.       
  76.     @Override  
  77.     public void afterPropertiesSet() throws Exception {  
  78.         Set<HostAndPort> haps = this.parseHostAndPort();  
  79.           
  80.         jedisCluster = new JedisCluster(haps, timeout, maxRedirections,genericObjectPoolConfig);  
  81.           
  82.     }  
  83.     public void setAddressConfig(Resource addressConfig) {  
  84.         this.addressConfig = addressConfig;  
  85.     }  
  86.   
  87.     public void setTimeout(int timeout) {  
  88.         this.timeout = timeout;  
  89.     }  
  90.   
  91.     public void setMaxRedirections(int maxRedirections) {  
  92.         this.maxRedirections = maxRedirections;  
  93.     }  
  94.   
  95.     public void setAddressKeyPrefix(String addressKeyPrefix) {  
  96.         this.addressKeyPrefix = addressKeyPrefix;  
  97.     }  
  98.   
  99.     public void setGenericObjectPoolConfig(GenericObjectPoolConfig genericObjectPoolConfig) {  
  100.         this.genericObjectPoolConfig = genericObjectPoolConfig;  
  101.     }  
  102.   
  103. }  

 

 

5.

到此配置完成

使用时,直接注入即可, 如下所示:

 

@Autowired

JedisCluster jedisCluster;

 

http://xyqck163.iteye.com/blog/2211108

分享到:
评论

相关推荐

    redis3.0安装包 window 64位

    (4)集群:Redis 3.0支持集群,可以将多个Redis实例拼接成一个集群,并实现负载均衡,提高Redis的可用性。 3、总结: Redis 3.0是一款高性能的开源内存数据库,它拥有非常快速的读写性能,几乎是传统数据库的1000倍...

    redis3.0widows集群+spring整合jedis

    redis3.0 widows集群 spring整合jedis redis搭建window集群代码和文档rubygems-2.5.1和rubyinstaller-2.2.3-x64软件下载

    redis3.0.集群环境安装手册

    Redis 3.0 集群环境安装手册 Redis 3.0 集群环境安装手册是指在 Linux 操作系统中安装和配置 Redis 3.0 集群的步骤指南。Redis 是一个开源、基于内存的数据结构存储系统,可以用作数据库、消息队列、缓存层等。 ...

    redis 3.0 集群指南

    ### Redis 3.0 集群指南 #### 一、Redis 3.0 的安装与配置 **安装步骤:** 在安装 Redis 3.0 之前,首先确保已安装了必要的依赖包,如 cpp、binutils、glibc 等。通过 `yum` 命令安装这些依赖: ```bash yum -y ...

    redis3.0-集群部署文档

    cp /usr/local/redis3.0/redis.conf /usr/local/cluster/ vi redis.conf ``` - 修改以下配置项: - `port`: 设置为节点对应的端口号(例如7000) - `daemonize yes`: 后台运行 - `cluster-enabled yes`: 开启...

    springcloud部署redis集群

    为了监控Redis集群的状态,可以使用`JedisCluster`或`LettuceClientResources`提供的方法获取节点信息。同时,定期检查节点的健康状况和复制状态,确保数据的一致性和完整性。 总的来说,部署SpringCloud中的Redis...

    redis最新3.0版本

    5. **Cluster改进**: Redis Cluster在3.0版本中得到了进一步优化,增加了更多的自动故障转移功能,使得分布式部署更加稳定。此外,槽的迁移过程也更加平滑,减少了服务中断的时间。 6. **Bits per value (Bitmaps)*...

    Redis3.0集群代理系统源码

    Redis3.0集群代理系统, 并发接收客户端请求,计算Key的哈希槽值,转发到对应的缓存服务器,并将缓存服务器的返回值回传给客户端, 这样客户端只要访问集群代理系统,实现一次性定位访问,效率与单台缓存服务器...

    spring4.0结合redis3.0

    当我们谈论"spring4.0结合redis3.0"时,主要涉及到如何在Spring 4.0版本的应用中集成并利用Redis 3.0的功能。 首先,集成Spring与Redis的关键在于`spring-data-redis`模块,它为Spring应用提供了操作Redis的高级...

    redis 3.0 win7 32位x86

    虽然Redis 3.0不支持集群功能,但在更高版本中,Redis引入了集群方案,允许在多台服务器之间分散数据,提高可用性和容量。若需要扩展,可以考虑升级到更高版本或使用哨兵(Sentinel)系统实现高可用性。 综上所述,...

    redis3.0 demo

    通过这个“redis3.0 demo”,我们可以学习如何配置和使用Redis集群,如何编写和执行LUA脚本,以及如何利用其他新特性来优化应用性能。同时,它也将演示如何处理复制、连接管理和安全性等核心问题。通过实践,你可以...

    redis3.0集群安装

    最后,可以使用`redis-cli`工具连接到集群中的任一节点,并使用`cluster nodes`命令来查看当前集群的状态和节点信息。 ```bash ./redis-cli -h 192.168.118.136 -p 7001 192.168.118.136:7001&gt; cluster nodes ``` ...

    Redis3.0集群与应用.zip

    Redis 3.0 集群与应用是关于如何配置、管理和使用Redis分布式数据库系统的一个教程,旨在提供简单明了的指导。Redis是一款高性能的键值存储服务,常用于数据库缓存、消息队列等场景。在3.0版本中,引入了集群功能,...

    redis3.0-window免安装

    本资源“redis3.0-window免安装”是专门为Windows操作系统设计的Redis 3.0版本,旨在简化在Windows平台上的部署和使用流程。 Redis 3.0是一个重要的版本,它引入了多项新特性和改进,包括但不限于: 1. **多线程...

    redis集群批量插入

    Java客户端库如JedisCluster或Lettuce提供了连接和操作Redis集群的API。 批量插入String类型数据时,通常使用`JedisCluster`类中的`mset`方法。这个方法允许一次性设置多个键值对,但需要注意的是,由于Redis集群的...

    nodejs-redis-cluster:redis3.0的nodejs扩展,支持集群

    redis3.0 的 nodejs 扩展,支持基于 nodejs npm redis url 的集群: : 更改日志 当我们向 redis 集群的一个节点发送命令时,我们可能会收到类似“ERR: MOVED 111 127.0.0.1:6379”的返回错误。 这不是错误,而是...

    redis3.0-windows

    这个"redis3.0-windows"压缩包文件显然包含了Redis 3.0版本的Windows兼容版本,允许用户在Windows操作系统上运行和管理Redis实例。 Redis的核心特性包括: 1. **键值存储**:Redis的基础是键值对存储,它允许存储...

    redis windows安装包 3.0.503

    本文将详细讲解如何在Windows环境下安装Redis 3.0.503版本,以及安装过程中可能遇到的问题和解决方法。 首先,Redis 3.0.503是Redis的一个较早版本,但在当时已经具备了稳定性和高效性。在安装前,确保你的系统满足...

Global site tag (gtag.js) - Google Analytics