redis 终于推出正式的集群解决方案,最新稳定版本v3.0.2。集群实现目的将不同的key分散到不同的节点上,传统哈希算法hash(key)%n,不适用于添加和删除节点场景,会导致大量的key无法命中,扩展比较困难。redis 没有采用一致性hash,而采用哈希槽( hash slot ) 方式来实现数据共享。
具体算法:crc16( key )%16384,从而将 16384 个槽分配至不同的节点上。
环境准备:
192.168.5.8 三个redis服务,分别监听 7000 70001 70002 端口
192.168.5.14 三个redis服务,分别监听 7003 70004 70005 端口
一. 配置
#redis.conf port 7000 #监听端口,集群间通信端口为 10000+7000 cluster-enabled yes #启用集群 cluster-config-file nodes-7000.conf #指定节点配置文件,由redis自动生成管理 cluster-node-timeout 5000 #节点间通信最大超时时间 appendonly yes #启动aof持久化模式
二. 运行
192.168.5.8 上启动三个redis实例,分别监听7000,7001,7002 三个端口。192.168.5.14启动实例监听7003,7004,7005三个端口。
mkdir cluster-test cd cluster-test mkdir 7000 7001 7002 mkdir 7003 7004 7005 cd 7000 ./redis-server redis.conf
三. 集群
cd $REDIS_SRC/src ./redis-trib.rb create --replicas 1 192.168.5.14:7000 192.168.5.14:7001 192.168.5.14:7002 192.168.5.8:7003 192.168.5.8:7004 192.168.5.8:7005
选项 --replicas 1 为每个主机创建一个相应的备机
运行该脚本报错,没有配置ruby环境。
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
方法一:用yum安装
#yum源安装ruby yum install -y ruby yum install -y rubygems # 安装redis库 gem install redis ERROR: could not find gem redis locally or in a repository #又被墙了,可恶 #下载redis库并安装 wget https://rubygems.org/downloads/redis-3.2.1.gem gem source gem source -a http://rubygems.org/ gem install redis-3.2.1.gem运行上述命令,报错:[ERR] Sorry, can't connect to node 192.168.5.14:7000,ruby 1.8.5 (2006-08-25) [i386-linux]。运行客户端 ./redis-cli -p 7000 能正常交互,搜索发现是redis官方需要较高的ruby版本。
方法二:源码安装
既然用yum不能安装最新版本,还是老老实实用源码安装
#源码安装ruby wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz tar -xvf ruby-2.2.2.tar.gz ./configure --prefix=/usr/local/ruby-2.2.2 make && make install gem install redis运行上述命令正常,发现 7000,7001,7003 变成主机,7002,7004,7005成为备机。
[root@pclient redis]# ./redis-trib.rb create --replicas 1 192.168.5.14:7000 192.168.5.14:7001 192.168.5.14:7002 192.168.5.8:7003 192.168.5.8:7004 192.168.5.8:7005 >>> Creating cluster Connecting to node 192.168.5.14:7000: OK Connecting to node 192.168.5.14:7001: OK Connecting to node 192.168.5.14:7002: OK Connecting to node 192.168.5.8:7003: OK Connecting to node 192.168.5.8:7004: OK Connecting to node 192.168.5.8:7005: OK >>> Performing hash slots allocation on 6 nodes... ...... [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
测试:
$ redis-cli -c -p 7000#集群交互必须加上-c选项,否则执行出错。
redis 127.0.0.1:7000> set foo bar -> Redirected to slot [12182] located at 127.0.0.1:7002 OK redis 127.0.0.1:7002> set hello world -> Redirected to slot [866] located at 127.0.0.1:7000 OK redis 127.0.0.1:7000> get foo -> Redirected to slot [12182] located at 127.0.0.1:7002 "bar" redis 127.0.0.1:7000> get hello -> Redirected to slot [866] located at 127.0.0.1:7000 "world"
参考资料:
http://redis.io/topics/cluster-tutorial
相关推荐
Redis高可用集群Redis Cluster搭建
完整搭建redis-cluster,全过程配合网页一起使用,效果更佳
Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。 Redis集群并 不支持处理多个keys... 本文,是我自己写的Redis Cluster集群搭建和配置详细步骤,包含了常用的Redis配置文件,和节点的管理等,以供大家参考.
RedisCluster 集群搭建文件RedisCluster 集群搭建文件RedisCluster 集群搭建文件
1.先运行 createFile.py 输入宿主机IP地址,输入redis密码 2.按照控制台输出执行docker-compose up -d 启动命令 3.启动成功后执行加入集群命令即可
Windows下安装部署redis cluster,亲测好使,包含 安装环境,redis-3.2.1.gem,redis cluster集群实例
Redis Cluster集群部署搭建详解附件,转自linux公社,里面有redis搭建集群的例子。供大家参考
《RedisCluster 搭建与使用》博客附件。 博客地址:https://blog.csdn.net/Supreme_Sir/article/details/115434801
本文档描述redis-cluster在centos7上面的集群搭建,从源码编译、环境准备、安装redis、修改配置文件、启动集群、关闭集群等各个地方进行详细描述不走
redis cluster集群安装的全部文件,只需要运行相关的bat文件,即可以完成集群的搭建。
docker 实现redis集群搭建
Redis Cluster集群的搭建与实践,详细讲解Redis 的集群部署及相关示例
redis3.0版本cluster安装部署配置和管理,样例演示, 集群操作常用命令 CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
参照网上资源,自己尝试搭建的 Windows 下 Redis集群搭建Demo.
redis-cluster集群搭建方式,里面包含了需要的插件,搭建步骤也非常详细............................
文档中介绍Linux7/CentOS7 下的redis cluster 集群搭建。使用的版本是4.0.8 包含节点创建、删除,移槽等操作。
本文详细描述了Redis Cluster 的搭建过程,每一步都详细描述,之后对一些集群常见操作命令每一个都进行了实验及效果展示,一步到位
rediscluster高可用集群搭建手册,从0 到1 完美的实现 redis集群搭建 redis5种数据类型
Windows 平台安装配置Redis-Cluster,可以直接下载使用,具体请看readme.txt!
Redis集群搭建教程(含搭建文档和所需软件)