一. 下载最新的redis 版本
笔者是3.2.100
下载地址:https://github.com/MicrosoftArchive/redis
下载ruby 并安装:https://rubyinstaller.org/downloads/
下载集群脚本:http://download.redis.io/releases/
中的linux 版本号为3.2.10 的包中的 src 目录下找到 redis-trib.rb 这个脚本 ,把它copy 到本地redis 安装目录下(这个集群脚本必须要用ruby 进行执行),注意一定要版本对应,不然在后面启动不了集群
二. 配置redis集群最小配置:
# 修改配置文件中的属性:
port 7001(对应文件夹的端口号)
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
三. redis 以后台服务启动:
1. 进入 DOS窗口
2. 在进入Redis的安装目录
3. 输入:
// 安装命令
redis-server --service-install cluster/7100/redis.7100.conf --service-name redis7100
// 卸载命令
redis-server --service-uninstall --service-name redis7100
redis-server --service-install ./6001/redis.windows.conf --service-name redis6001
redis-server --service-install ./6002/redis.windows.conf --service-name redis6002
redis-server --service-install ./6003/redis.windows.conf --service-name redis6003
redis-server --service-install ./6004/redis.windows.conf --service-name redis6004
redis-server --service-install ./6005/redis.windows.conf --service-name redis6005
redis-server --service-install ./6006/redis.windows.conf --service-name redis6006
4. 输入:redis-server --service-start ( 启动服务 )
5. 输入:redis-server --service-stop (停止服务)
启动指定的配置文件redis-server --service-start redis.windows-service.conf
# redis 一些常用命令:
连接: redis-cli -h 127.0.0.1 -p 6001
info(查看 Redis 服务器的全部信息)
keys *(查看当前存储的所有 key)
get <keyname>(查看指定 key 的内容)
del <keyname>(删除指定 key 的内容)
set <keyname> <value>(设置指定 key 的内容)
flushdb(删除 当前数据库 中的所有 key)
flushall(删除 所有数据库 中的所有 key)
info 指令:查看 Redis 服务器的全部信息
info server // 查看服务器基本信息
info memory // 查看内存使用情况
四: 在ruby 命令行中安装redis :
gem install redis
五:分配主从:
比如
Master slave
6001 6004
6002 6005
6003 6006
启动集群命令如下:
# 选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点
#--replicas 1的意思是每个master有1个slave
redis-trib.rb create --replicas 1 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006
如果不能启动,原因是redis 版本与 redis-trib.rb 的版本对应不上导致,笔者开始也犯了这个错误 , 我拿了5.0.4 的脚本进行执行,所以启动不了集群,以下是我启动错误提示
正常启动成功界面:
然后控制台列出了 集群的主从配置,让你确认,输入yes 即可。
六:关于集群相关命令
最后查看集群节点信息:
redis-cli -c -h 127.0.0.1 -p 6001 cluster nodes
或者登录到集群中,进行查看:
登录:redis-cli -c -p 6001 -h 127.0.0.1
查看: cluster info
集群的一些命令:
cluster info // 集群总揽
cluster nodes // 列出集群当前已知的所有节点(node),以及这些节点的相关信息
cluster meet <ip> <port> // 将指定的节点(ip:port)添加到集群中,让它成为集群的一员
cluster forget <node_id> // 从集群中移除 node_id 节点
cluster replicate <node_id> // 将当前节点设置为 node_id 节点的从节点
cluster saveconfig // 将节点的配置文件保存到硬盘里面
cluster addslots <slot> [slot ...] // 将一个或多个槽(slot)指派(assign)给当前节点
cluster delslots <slot> [slot ...] // 移除当前节点的一个或多个槽
cluster flushslots // 移除当前节点的所有槽(删除集群内的最后一个主节点时,可用到)
cluster setslot <slot> node <node_id> // 将槽 slot 指派给 node_id 节点。如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,再进行指派
cluster setslot <slot> migrating <node_id> // 将本节点的槽 slot 迁移到 node_id 节点中去
cluster setslot <slot> importing <node_id> // 从 node_id 节点中导入槽 slot 到本节点来
cluster setslot <slot> stable // 取消对槽 slot 的导入(import)或者迁移(migrate)
cluster keyslot <key> 计算键 key 应该被放置在哪个槽上
cluster countkeysinslot <slot> 返回槽 slot 目前包含的键值对数量
cluster getkeysinslot <slot> <count> 返回 count 个 slot 槽中的键
关于 redis-trib.rb 中对集群的一些操作命令:
# 删除某个节点
说明:
如果是删除从(Slave)节点,上述命令即可。
如果是删除主(Master)节点,则要看情况:
如果主节点上有从节点,则要将从节点删除或转移到其它主节点上去,该主节点才能被删除。
如果主节点上有槽(Slot),则要将槽删除或转移到其它主节点上去,该主节点才能被删除。
redis-trib.rb del-node <ip>:<port> 'node_id' // 单引号内放置节点id
#转移槽的方法:
redis-trib.rb reshard <ip>:<port> // 取消分配的槽(Slot)的节点
参考:
https://blog.csdn.net/yaomingyang/article/details/79045853