`
haoran_10
  • 浏览: 442596 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

redis(9)、redis集群之redis Cluster使用

阅读更多

redis技术目录

 

前提:redis集群分片,目前redis有两类方案

  • 哈希槽(hash slot),代表方案:redis cluster
  • 一致性哈希,代表方案:twemproxy、codis
 本篇是针对redis cluster配置实现,原理会在另一个文章在解析。By haoran-10.iteye.com

 

 
先理解几个关键词:
节点:单个redis运行时,是孤立的,一旦出现故障,最多主从复制时,数据不会丢失,但是造成了redis不可用。redis单机,一个节点。
集群:很多节点通过某种方案联系起来,一起提供redis服务,称为redis集群。单个节点出现故障时,数据会转移(不保证强一致性)到安全的备份节点,提供高可用的redis服务,缺点是不可以使用不支持处理多个              键的命令
分片:redis数据很多时,单个redis放不下,此时redis集群通过分片技术,把数据平均分配到不同的节点。
哈希槽:redis集群通过哈希槽的方式,把数据分配到不同的节点。Redis集群有16384个哈希槽,我们只是使用键的CRC16编码对16384取模来计算一个指定键所属的哈希槽。 
 
 
1、redis节点关键配置
daemonize yes
pidfile /mytest/redis_dev/9001/redis.pid
port 9001
appendonly yes
appendfsync everysec
cluster-enabled yes
cluster-config-file nodes.conf  
cluster-node-timeout 15000
 
 首次配置,强烈建议使用6个节点,这样更能直观的理解redis集群的配置以及优点所在。
 复制成6分,9001,9002,9003,9004,9005,9006(注意改成不同的端口,不同的pid文件,nodes.conf不要理会,redis会自动创建,自动管理)
2、启动各个节点


 
3、使用redis-trib工具 创建集群 
启动成功之后,使用redis自带的工具创建集群
注,这里要安装ruby等工具
(2)、安装ruby gem
(3)、安装gem redis
安装过程比较简单,略过。


 
 输入"yes",继续

 
哈希槽已经分配到9001,9002,9003节点中。 
4、使用redis-cli测试

 
注意:这里是使用src/redis-cli -c 命令,才能启动客户端集群操作模式
获取操作测试:


 
从数据中可以看到,客户端是从9002端口进入,当输入set age 27 时,是自动转存到9001节点上,
当输入get age 时,也是从9001节点获取数据
 
5、容错处理测试
手动把9001节点给kill 掉

 

 

 
此时继续操作redis集群

 
自动从原先的9001的从节点9004节点(9001为主节点,9004是9001的从节点)中获取数据,说明9004自动转为主节点
 
 
6、增加节点测试
创建9007节点,启动9007
 
并且把9007节点设为9004的从节点
src/redis-trib.rb add-node --slave 127.0.0.1:9007 127.0.0.1:9004
 
从输出结果中,可以看到9007做为9004的一个复制节点,也就是从节点。
 
 
7、增加一个主节点,重新分片集群
redis-trib.rb reshard 127.0.0.1:9008
 主要是把哈希槽重新分配 
 
8、java 客户端 
貌似只有使用sharedjedis 才可以,spring-data-redis还不支持redis新的集群特性,不知道是不是姿势不对。
package wang.conge.init;

import java.util.HashSet;
import java.util.Set;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

public class SharedRedisClient {
	public static void main(String[] args) {
		Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();  
        jedisClusterNodes.add(new HostAndPort("127.0.0.1", 9001));  
        
        JedisCluster jedis = new JedisCluster(jedisClusterNodes);
        
        jedis.set("nginx", "yes");
		jedis.set("tomcat", "yes");
		jedis.set("keepalived", "yes");
		jedis.set("vip", "yes");
		jedis.set("redis", "yes");
		jedis.set("mysql", "yes");
		
		String key = jedis.get("redis");
		System.out.println(key);
	}
}
 
9、小结
redis官方提供的集群方案配置太繁琐了,不过性能上也比较强悍,公司还没用到生产,拭目以待吧。

 

  • 大小: 61.7 KB
  • 大小: 12.7 KB
  • 大小: 12.6 KB
  • 大小: 22.6 KB
  • 大小: 3.2 KB
  • 大小: 20.7 KB
  • 大小: 8.4 KB
  • 大小: 78.7 KB
  • 大小: 24 KB
  • 大小: 77.2 KB
0
1
分享到:
评论

相关推荐

    Redis-Cluster集群模式部署

    Redis Cluster 集群模式部署 本文将详细介绍 Redis Cluster 集群模式部署的步骤和配置过程。Redis Cluster 是 Redis 的一个高可用解决方案,通过将多个 Redis 节点组合成集群,提高 Redis 的可用性和性能。 环境...

    Redis-Cluster 分布式集群.docx

    1. 使用`redis-cli --cluster create`命令创建集群。这个命令需要提供所有初始节点的IP地址和端口号,以及集群副本的数量(默认为1)。例如: ``` redis-cli --cluster create 192.168.65.2:7000 192.168.65.2:...

    redis-cluster redis伪集群文件

    搭建redis集群文件,内含六个redis,文件配置已经全部修改好了,1、先在服务器安装下yum install ruby 和 yum install rubygems 2、然后解压文件上传到linux服务器 3、./redis-cluster-start-all.sh 开启reids 4、...

    RedisCluster集群(Spring访问Redis)

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

    rediscluster集群demo

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

    Redis高可用集群Redis Cluster搭建

    Redis高可用集群Redis Cluster搭建 Redis高可用集群Redis Cluster搭建是 Redis 官方推荐的高可用性解决方案,于 3.0 版本推出。Redis Cluster 的主要用途是实现数据分片(Data Sharding),同时也可以实现高可用...

    redisCluster集群demo

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

    springcloud部署redis集群

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

    Redis Cluster集群部署搭建详解附件

    本文将详细解析如何搭建Redis Cluster集群,包括集群的基本概念、配置、节点间通信以及常见问题处理。 一、Redis Cluster基础概念 1. 节点:每个运行Redis服务的实例称为一个节点,至少需要3个节点才能创建一个基本...

    03-VIP-Redis缓存高可用集群(预习)1

    6. **Java操作Redis集群**:在Java应用中操作Redis集群,需要引入相应的Redis客户端库,如Jedis或Lettuce,它们支持与Redis集群的交互,包括读写操作、事务处理、发布订阅等功能。 **注意事项**: - 集群中的节点应...

    redis-cluster集群部署

    Redis 集群部署在 CentOS 7.4 上的详细操作步骤 在本教程中,我们将学习如何在 CentOS 7.4 上部署 Redis 集群。Redis 集群是一种高可用性的解决方案,它可以将多个 Redis 实例组合成一个集群,以便提供更高的性能和...

    docker 运行redis-trib 带密码创建redis cluster集群配置

    docker 运行redis-trib 带密码创建redis cluster集群配置,没有密码的请自己去下载一个redis-trib.rb替换

    Redis Cluster集群模式学习

    3. 使用 src/redis-server redis-cluster.conf 命令启动集群。 4. 使用 src/redis-cli -a 123456 --cluster create 命令创建集群,指定节点 IP 和端口。 Redis Cluster 集群的优点: * 高可用:每个节点都保存数据...

    Redis+nginx集群部署

    5. **配置Redis**:需要在Tomcat的`context.xml`文件中配置一个连接到Redis的SessionManager,例如使用`JedisCluster`库来连接Redis集群。 6. **Nginx与Tomcat的通信**:Nginx配置文件(如`nginx.conf`)需要设置...

    redis-desktop-manager-2019.0.0(单机+集群连接).zip

    本文将深入探讨Redis Desktop Manager的功能、特性以及如何使用它来管理单机和集群模式的Redis实例。 一、Redis Desktop Manager简介 Redis Desktop Manager是一款跨平台的应用程序,提供Windows、Mac OS X和Linux...

    windows一键Redis-Cluster集群工具(32位Redis-v3.0.504)原忘记配置文件了

    windows一键Redis-Cluster集群工具(32位Redis-v3.0.504),资源包括:ruby安装包,rubygem,32位Redis-v3.0.504,一键Redis-Cluster集群工具等,64位请自行替换相关资源包即可,相关文章见:...

    jfinal redis cluster plugin-JFinal redis cluster集群插件 带连接池和Jedis包

    标题中的“jfinal redis cluster plugin”指的是一个专为JFinal框架设计的Redis集群插件,旨在帮助开发者在使用JFinal时能便捷地接入并管理Redis集群。JFinal是一款基于Java的轻量级Web开发框架,它以其简洁的API...

    jfinal redis cluster plugin-JFinal redis cluster集群插件

    使用JFinal Redis Cluster插件时,首先需要将其引入到项目中,这里我们看到有一个名为 "jfinal-rediscluster-plugin-by-shixiaotian-0.0.1.jar" 的文件,这应该是该插件的可执行版本。通常,开发者会将这个JAR文件...

Global site tag (gtag.js) - Google Analytics