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
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!-- Jedis链接池配置,注意:Jedis版本建议升级到最新 -->
- <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
- <property name="maxTotal" value="100" />
- <property name="maxIdle" value="20" />
- <property name="minIdle" value="10" />
- <property name="blockWhenExhausted" value="true"></property>
- <property name="maxWaitMillis" value="3000" />
- <property name="testOnBorrow" value="false" />
- <property name="testOnReturn" value="false" />
- <property name="testWhileIdle" value="true" />
- <property name="minEvictableIdleTimeMillis" value="60000" />
- <property name="timeBetweenEvictionRunsMillis" value="30000" />
- <property name="numTestsPerEvictionRun" value="-1" />
- </bean>
- <!-- JedisCluster -->
- <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
- <constructor-arg index="0">
- <set>
- <bean class="redis.clients.jedis.HostAndPort">
- <constructor-arg index="0" value="192.168.1.111" />
- <constructor-arg index="1" value="7111" type="int" />
- </bean>
- <bean class="redis.clients.jedis.HostAndPort">
- <constructor-arg index="0" value="192.168.1.112" />
- <constructor-arg index="1" value="7112" type="int" />
- </bean>
- <bean class="redis.clients.jedis.HostAndPort">
- <constructor-arg index="0" value="192.168.1.113" />
- <constructor-arg index="1" value="7113" type="int" />
- </bean>
- <bean class="redis.clients.jedis.HostAndPort">
- <constructor-arg index="0" value="192.168.1.114" />
- <constructor-arg index="1" value="7114" type="int" />
- </bean>
- <bean class="redis.clients.jedis.HostAndPort">
- <constructor-arg index="0" value="192.168.1.115" />
- <constructor-arg index="1" value="7115" type="int" />
- </bean>
- <bean class="redis.clients.jedis.HostAndPort">
- <constructor-arg index="0" value="192.168.1.116" />
- <constructor-arg index="1" value="7116" type="int" />
- </bean>
- </set>
- </constructor-arg>
- <constructor-arg index="1" value="2000" type="int"></constructor-arg>
- <constructor-arg index="2" value="100" type="int"></constructor-arg>
- <constructor-arg index="3" ref="jedisPoolConfig"></constructor-arg>
- </bean>
- </beans>
- package wusc.edu.demo.redis;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import redis.clients.jedis.JedisCluster;
- public class RedisClusterSpringTest {
- private static final Log log = LogFactory.getLog(RedisClusterSpringTest.class);
- public static void main(String[] args) {
- try {
- ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring-context.xml");
- context.start();
- JedisCluster jedisCluster = (JedisCluster) context.getBean("jedisCluster");
- int num = 1000;
- String key = "yingjun";
- String value = "";
- for (int i=1; i <= num; i++){
- // 存数据
- //jedisCluster.set(key+i, "yingjun"+i);
- //jedisCluster.setex(key+i, 60, "yingjun"+i);
- // 取数据
- value = jedisCluster.get(key+i);
- log.info(key+i + "=" + value);
- // 删除数据
- //jedisCluster.del(key+i);
- //value = jedisCluster.get(key+i);
- //log.info(key+i + "=" + value);
- }
- context.stop();
- } catch (Exception e) {
- log.error("==>RedisSpringTest context start error:", e);
- System.exit(0);
- } finally {
- log.info("===>System.exit");
- System.exit(0);
- }
- }
- }
相关推荐
基于Centos7系统,由浅入深讲解如何部署Redis的四种模式,分别是:单机模式、主从模式、哨兵模式、集群模式。 完整原文:http://exp-blog.com/2018/09/14/pid-2285/ 同时提供Jedis客户端封装源码: ● 屏蔽Jedis与...
此外,还讲解了Redis的单线程模型、主从复制、哨兵模式和Redis Cluster等集群方案。最后,文章提供了多种性能优化方法,如选择合适的数据类型、使用管道、合理设置过期时间、使用压缩算法等。 适合人群:对于希望...
2. 副本(Replication):Redis-Cluster支持主从复制,每个节点都有一个或多个副本节点,用于提高数据的安全性和服务的可用性。当主节点故障时,其副本可以接管服务。 3. 路由(Routing):客户端与集群交互时,需要...
**RedisCluster集群与Spring访问Redis详解** Redis是一个高性能的键值数据库,广泛应用于缓存、消息中间件等场景。在大型分布式系统中,为了提供高可用性和数据冗余,我们通常会采用Redis Cluster来构建集群。本文...
在这个场景下,主从模式和哨兵模式结合使用,可以构建出一套高效且可靠的 Redis 高可用解决方案。 1. **主从模式**: 主从模式是 Redis 提供的一种基础的高可用策略,它通过数据复制来实现读写分离。主节点负责...
本示例“rediscluster集群demo”旨在展示如何设置和操作一个简单的Redis Cluster实例,确保在本地环境中的正确运行。 首先,Redis Cluster采用无中心架构,每个节点都是对等的,并且负责一部分数据。它通过槽(slot...
Redis Cluster集群是Redis的一个高可用性解决方案,它可以在多个Redis节点之间分配数据和状态,提供高性能和高可用性的数据存储服务。下面是Redis Cluster集群的主要知识点: 1. Redis Cluster架构 Redis Cluster...
在`redisCluster-demo`这个项目中,你可以期待找到一个使用Java实现的示例,展示如何配置和使用`JedisCluster`或者`Lettuce`来连接Redis Cluster,以及如何进行基本的数据操作。这个示例可以帮助初学者理解如何在...
在3.2.1版本中,Redis引入了集群(Cluster)功能,旨在提供数据分布式存储和高可用性解决方案。集群允许我们将数据分散到多个节点上,以实现负载均衡和故障转移,同时保持数据的一致性。下面将详细讲解Redis 3.2.1...
Redis提供了多种方式来确保服务的稳定性和数据的安全性,包括主从复制、哨兵系统以及集群方案。这里我们将详细探讨如何利用Docker Compose部署Redis的主从哨兵配置和集群高可用性解决方案。 首先,Docker Compose是...
在 Redis 3.0.0 及更高版本中,已经支持集群模式,可以使用 cluster Enable 命令来启用集群模式。 本文档详细介绍了 Redis 主从集群的搭建和容灾部署,使用哨兵(Sentinel)来实现高可用性和自动故障转移。同时,本...
Redis Cluster是Redis官方提供的分布式解决方案,它通过将数据分割成多个槽(slots)并分散到不同的节点上,实现了数据的分布存储。每个节点都存储一部分槽,并且可以通过槽迁移来动态调整数据分布。集群还支持主从...
Redis 集群(Redis Cluster)是一种原生的分布式解决方案,它将数据分割成多个槽,并在多个节点间分配。每个节点负责一部分槽,而不是复制整个数据集。这样,即使部分节点故障,其他节点仍能继续提供服务。Redis ...
Redis Cluster是Redis的分布式解决方案,它允许你在多个节点之间分发数据,从而实现高可用性和可扩展性。在本压缩包“redis-cluster-5.0.7.tar.gz”中,我们将探讨Redis Cluster的配置和使用。 首先,`redis-...
- Cluster集群:通过分片(Sharding)实现数据分布式存储,提供更高级别的容错性和扩展性。 4. **持久化** Redis提供两种持久化方式:RDB(快照)和AOF(追加日志)。RDB定期保存数据库的完整状态,适用于灾难...
在本文中,我们将深入探讨如何在Java环境中,特别是在Spring框架下,实现全面的Redis线程池配置,包括Redis Cluster线程池、主从Redis的读写分离以及Sentinel的读写分离策略。 首先,我们要理解Redis线程池的重要性...
Redis集群是一种分布式数据库解决方案,它允许用户将数据分散存储在多台服务器上,以提高系统的可扩展性和可用性。在“Redis集群测试”中,我们通常会关注以下几个关键知识点: 1. **集群架构**:Redis集群采用无...
Redis集群(Cluster)配置则是为了进一步扩展Redis的处理能力,支持数据分片(Sharding),将数据分散到多个节点,每个节点只负责一部分数据的存储和处理。这使得Redis能够处理更大的数据量,并通过负载均衡分散压力...
1. **RedisClient**:原有的Shiro Redis连接器可能使用了单一的Redis连接,现在可能被替换为一个支持集群的客户端,如JedisCluster或Lettuce,这两个库都支持与Redis集群交互。 2. **Session管理**:`...