`

redis:redis cluster集群主从方案

阅读更多

http://wosyingjun.iteye.com/blog/2289220

 

Redis的安装以及cluster配置

下载redis最新的安装包
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
解压
tar xzf redis-3.0.7.tar.gz 
安装支持包tcl
yum install tcl 编译原文件
make
创建集群相关文件(方便管理)
mkdir cluster 
cd cluster
mkdir 6379 6380 6381 6382 6383 6384 
cluster下面每个目录中都创建一个redis.conf文件. 注意修改文件中的端口号:

port 6379
cluster-enabled yes
cluster-config-file nodes_6379.conf
cluster-node-timeout 5000
appendonly yes

把redis-server的可执行文件复制到cluster下面的各个目录, 然后打开6个shell终端,进入各个目录,启动每个实例, 命令如下: 
./redis-server redis.conf

 

搭建集群
./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
此时报错,发现缺少相应的ruby环境,如下安装相应环境:
yum install ruby
yum install rubygems
gem install redis

安装好环境后再次搭建集群
./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 

 

检测集群节点相关信息 
./redis-trib.rb check 127.0.0.1:6379 

 

进入某个节点验证
./redis-cli -c -h 127.0.0.1 -p 6379

 

 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xsi:schemaLocation="  
  5.         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">  
  6.   
  7.     <!-- Jedis链接池配置,注意:Jedis版本建议升级到最新 -->  
  8.     <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">  
  9.         <property name="maxTotal" value="100" />  
  10.         <property name="maxIdle" value="20" />  
  11.         <property name="minIdle" value="10" />  
  12.         <property name="blockWhenExhausted" value="true"></property>  
  13.         <property name="maxWaitMillis" value="3000" />  
  14.         <property name="testOnBorrow" value="false" />  
  15.         <property name="testOnReturn" value="false" />  
  16.         <property name="testWhileIdle" value="true" />  
  17.         <property name="minEvictableIdleTimeMillis" value="60000" />  
  18.         <property name="timeBetweenEvictionRunsMillis" value="30000" />  
  19.         <property name="numTestsPerEvictionRun" value="-1" />  
  20.     </bean>  
  21.   
  22.     <!-- JedisCluster -->  
  23.     <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">  
  24.         <constructor-arg index="0">  
  25.             <set>  
  26.                 <bean class="redis.clients.jedis.HostAndPort">  
  27.                     <constructor-arg index="0" value="192.168.1.111" />  
  28.                     <constructor-arg index="1" value="7111" type="int" />  
  29.                 </bean>  
  30.                 <bean class="redis.clients.jedis.HostAndPort">  
  31.                     <constructor-arg index="0" value="192.168.1.112" />  
  32.                     <constructor-arg index="1" value="7112" type="int" />  
  33.                 </bean>  
  34.                 <bean class="redis.clients.jedis.HostAndPort">  
  35.                     <constructor-arg index="0" value="192.168.1.113" />  
  36.                     <constructor-arg index="1" value="7113" type="int" />  
  37.                 </bean>  
  38.                 <bean class="redis.clients.jedis.HostAndPort">  
  39.                     <constructor-arg index="0" value="192.168.1.114" />  
  40.                     <constructor-arg index="1" value="7114" type="int" />  
  41.                 </bean>  
  42.                 <bean class="redis.clients.jedis.HostAndPort">  
  43.                     <constructor-arg index="0" value="192.168.1.115" />  
  44.                     <constructor-arg index="1" value="7115" type="int" />  
  45.                 </bean>  
  46.                 <bean class="redis.clients.jedis.HostAndPort">  
  47.                     <constructor-arg index="0" value="192.168.1.116" />  
  48.                     <constructor-arg index="1" value="7116" type="int" />  
  49.                 </bean>  
  50.             </set>  
  51.         </constructor-arg>  
  52.         <constructor-arg index="1" value="2000" type="int"></constructor-arg>  
  53.         <constructor-arg index="2" value="100" type="int"></constructor-arg>  
  54.         <constructor-arg index="3" ref="jedisPoolConfig"></constructor-arg>  
  55.     </bean>  
  56.   
  57. </beans>  

 

Java代码  收藏代码
  1. package wusc.edu.demo.redis;  
  2.   
  3. import org.apache.commons.logging.Log;  
  4. import org.apache.commons.logging.LogFactory;  
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  6.   
  7. import redis.clients.jedis.JedisCluster;  
  8.   
  9.   
  10. public class RedisClusterSpringTest {  
  11.     private static final Log log = LogFactory.getLog(RedisClusterSpringTest.class);  
  12.   
  13.     public static void main(String[] args) {  
  14.         try {  
  15.             ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");  
  16.             context.start();  
  17.               
  18.             JedisCluster jedisCluster = (JedisCluster) context.getBean("jedisCluster");  
  19.             int num = 1000;  
  20.             String key = "yingjun";  
  21.             String value = "";  
  22.             for (int i=1; i <= num; i++){  
  23.                 // 存数据  
  24.                 //jedisCluster.set(key+i, "yingjun"+i);  
  25.                 //jedisCluster.setex(key+i, 60, "yingjun"+i);  
  26.                   
  27.                 // 取数据  
  28.                 value = jedisCluster.get(key+i);   
  29.                 log.info(key+i + "=" + value);  
  30.                   
  31.                 // 删除数据  
  32.                 //jedisCluster.del(key+i);   
  33.                 //value = jedisCluster.get(key+i);   
  34.                 //log.info(key+i + "=" + value);  
  35.             }  
  36.   
  37.             context.stop();  
  38.         } catch (Exception e) {  
  39.             log.error("==>RedisSpringTest context start error:", e);  
  40.             System.exit(0);  
  41.         } finally {  
  42.             log.info("===>System.exit");  
  43.             System.exit(0);  
  44.         }  
  45.     }  
  46. }  
分享到:
评论

相关推荐

    Redis部署笔记(单机+主从+哨兵+集群)

    基于Centos7系统,由浅入深讲解如何部署Redis的四种模式,分别是:单机模式、主从模式、哨兵模式、集群模式。 完整原文:http://exp-blog.com/2018/09/14/pid-2285/ 同时提供Jedis客户端封装源码: ● 屏蔽Jedis与...

    Redis:高性能内存数据库的深度解析及其应用场景

    此外,还讲解了Redis的单线程模型、主从复制、哨兵模式和Redis Cluster等集群方案。最后,文章提供了多种性能优化方法,如选择合适的数据类型、使用管道、合理设置过期时间、使用压缩算法等。 适合人群:对于希望...

    Windows环境Redis-Cluster配置

    2. 副本(Replication):Redis-Cluster支持主从复制,每个节点都有一个或多个副本节点,用于提高数据的安全性和服务的可用性。当主节点故障时,其副本可以接管服务。 3. 路由(Routing):客户端与集群交互时,需要...

    RedisCluster集群(Spring访问Redis)

    **RedisCluster集群与Spring访问Redis详解** Redis是一个高性能的键值数据库,广泛应用于缓存、消息中间件等场景。在大型分布式系统中,为了提供高可用性和数据冗余,我们通常会采用Redis Cluster来构建集群。本文...

    Redis高可用之哨兵+主从模式总结

    在这个场景下,主从模式和哨兵模式结合使用,可以构建出一套高效且可靠的 Redis 高可用解决方案。 1. **主从模式**: 主从模式是 Redis 提供的一种基础的高可用策略,它通过数据复制来实现读写分离。主节点负责...

    rediscluster集群demo

    本示例“rediscluster集群demo”旨在展示如何设置和操作一个简单的Redis Cluster实例,确保在本地环境中的正确运行。 首先,Redis Cluster采用无中心架构,每个节点都是对等的,并且负责一部分数据。它通过槽(slot...

    Redis Cluster集群的搭建与实践

    Redis Cluster集群是Redis的一个高可用性解决方案,它可以在多个Redis节点之间分配数据和状态,提供高性能和高可用性的数据存储服务。下面是Redis Cluster集群的主要知识点: 1. Redis Cluster架构 Redis Cluster...

    redisCluster集群demo

    在`redisCluster-demo`这个项目中,你可以期待找到一个使用Java实现的示例,展示如何配置和使用`JedisCluster`或者`Lettuce`来连接Redis Cluster,以及如何进行基本的数据操作。这个示例可以帮助初学者理解如何在...

    Redis3.2.1 集群(包含主从,哨兵机制)

    在3.2.1版本中,Redis引入了集群(Cluster)功能,旨在提供数据分布式存储和高可用性解决方案。集群允许我们将数据分散到多个节点上,以实现负载均衡和故障转移,同时保持数据的一致性。下面将详细讲解Redis 3.2.1...

    docker-compose redis主从哨兵 redis多节点高可用 redis集群高可用

    Redis提供了多种方式来确保服务的稳定性和数据的安全性,包括主从复制、哨兵系统以及集群方案。这里我们将详细探讨如何利用Docker Compose部署Redis的主从哨兵配置和集群高可用性解决方案。 首先,Docker Compose是...

    redis主从集群搭建及容灾部署(哨兵sentinel).pdf

    在 Redis 3.0.0 及更高版本中,已经支持集群模式,可以使用 cluster Enable 命令来启用集群模式。 本文档详细介绍了 Redis 主从集群的搭建和容灾部署,使用哨兵(Sentinel)来实现高可用性和自动故障转移。同时,本...

    windowsredis集群搭建

    Redis Cluster是Redis官方提供的分布式解决方案,它通过将数据分割成多个槽(slots)并分散到不同的节点上,实现了数据的分布存储。每个节点都存储一部分槽,并且可以通过槽迁移来动态调整数据分布。集群还支持主从...

    Redis集群高可用,主从1

    Redis 集群(Redis Cluster)是一种原生的分布式解决方案,它将数据分割成多个槽,并在多个节点间分配。每个节点负责一部分槽,而不是复制整个数据集。这样,即使部分节点故障,其他节点仍能继续提供服务。Redis ...

    redis-cluster-5.0.7.tar.gz

    Redis Cluster是Redis的分布式解决方案,它允许你在多个节点之间分发数据,从而实现高可用性和可扩展性。在本压缩包“redis-cluster-5.0.7.tar.gz”中,我们将探讨Redis Cluster的配置和使用。 首先,`redis-...

    Redis:高效的数据存储与缓存解决方案

    - Cluster集群:通过分片(Sharding)实现数据分布式存储,提供更高级别的容错性和扩展性。 4. **持久化** Redis提供两种持久化方式:RDB(快照)和AOF(追加日志)。RDB定期保存数据库的完整状态,适用于灾难...

    最全redis线程池实现,Spring支持,redis Cluster线程池,主从Redis读写分离,sentenl读写分离等

    在本文中,我们将深入探讨如何在Java环境中,特别是在Spring框架下,实现全面的Redis线程池配置,包括Redis Cluster线程池、主从Redis的读写分离以及Sentinel的读写分离策略。 首先,我们要理解Redis线程池的重要性...

    Redis集群测试

    Redis集群是一种分布式数据库解决方案,它允许用户将数据分散存储在多台服务器上,以提高系统的可扩展性和可用性。在“Redis集群测试”中,我们通常会关注以下几个关键知识点: 1. **集群架构**:Redis集群采用无...

    redis工作原理及单机主从集群版安装使用说明书

    Redis集群(Cluster)配置则是为了进一步扩展Redis的处理能力,支持数据分片(Sharding),将数据分散到多个节点,每个节点只负责一部分数据的存储和处理。这使得Redis能够处理更大的数据量,并通过负载均衡分散压力...

    shiro连接redis集群 根据org.crazycake.shiro包改造源码

    1. **RedisClient**:原有的Shiro Redis连接器可能使用了单一的Redis连接,现在可能被替换为一个支持集群的客户端,如JedisCluster或Lettuce,这两个库都支持与Redis集群交互。 2. **Session管理**:`...

Global site tag (gtag.js) - Google Analytics