最近项目里需要引入Redis,这里记录下Redis的安装。这里以centos7为例,首先我们需要确保防火墙关闭

systemctl status firewalld.service  //查看防火墙状态
systemctl stop firewalld.service  //关闭防火墙
systemctl disable firewalled.service  //永久关闭防火墙

一、Redis基于Linux系统单机安装

1.安装gcc依赖

由于Redis是基于C语言编写,所以编译时需要GCC。 Redis6.X.X版本支持了多线程,需要GCC的版本大于4.9,但是centos7的默认版本是4.8.5。所以我们需要升级gcc

yum -y install centos-release-sc1yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++
devtoolset-9-binutilssc1 enable devtoolset-9 bashecho "source /opt/rh/devtoolset-9/enable" >>/etc/profile

在此窗口确认GCC的版本:

gcc -v

2.下载解压文件

下载地址:https://redis.io/download/#redis-downloads

解压文件:

[root@localhost local]# tar -xzf redis-6.0.16.tar.gz

3.修改redis.conf文件

daemonize yes  //更改为后台启动
#bind 127.0.0.1  //注释
protected-mode no  //允许外部网络直接访问

4.启动Redis

如果src文件下没有redis.server,在redis目录执行make指令

[root@localhost src]# ./redis-server ../redis.conf  //启动服务
[root@localhost src]# ./redis-cli  //进入客户端

二、Redis集群搭建

(一) Redis主从安装

设置从节点有三种方式

replicaof ip port  //启动前
./redis-server ../redis.conf --slaveof ip port  //启动时
slaveof ip port  //启动后

1.修改redis.conf文件

daemonize yes  //更改为后台启动
#bind 127.0.0.1  //注释
protected-mode no  //允许外部网络直接访问replicaof 192.168.8.129 6379  //添加是哪台机器的从节点  主节点ip+port

2.启动Redis

如果src文件下没有redis.server,在redis目录执行make指令

[root@localhost src]# ./redis-server ../redis.conf  //启动服务
[root@localhost src]# ./redis-cli  //进入客户端

3.查看节点信息

我们查看是否配置了主节点配置

127.0.0.1:6379> config get replicaof
1)"replicaof"
2) "192.168.8.129 6379"

查看从节点信息

127.0.0.1:6379> info replication
# Replication
role:slave  //角色
master_host:192.168.8.129  //主节点ip
master_port:6379  //主节点port
master_link_status:up  //连接状态  up是正常同步连接状态down表示复制端口
master_last_io_seconds_ago:1  //主库多少秒没有发送数据到从库  0-10
master_sync_in_progress:0  //是否正在跟主服务同步
slave_repl_offset:163  //从节点偏移量
slave_priority:100  //选举时成为主节点的优先级 越大优先级越高 0不会成为主节点
slave_read_only:1  //是否为只读从库
connected_slaves:0  //连接的从库实例
master_replid:04f4969ab63ce124e870fa1e4920942a5b3448e7  //master启动时生成的40位16进制的随机字符串,用来标识master节点
master_replid2:0000000000000000000000000000000000000000  //slave切换master之后,会生成了自己的master标识,之前的master节点的标识存到了master_replid2的位置
master_repl_offset:163  //已写入偏移量
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576 //复制积压的缓存区大小
repl_backlog_first_byte_offset:1
repl_backlog_histlen:163

查看主节点信息

127.0.0.1:6379> info replication
# Replication
role:master  //角色
connected_slaves:1 //从节点数量
slave0:ip=192.168.8.127,port=6379,state=online,offset=78899,lag=1  //从节点的信息 状态 偏移量
master_replid:04f4969ab63ce124e870fa1e4920942a5b3448e7  //master启动时生成的40位16进制的随机字符串,用来标识master节点
master_replid2:0000000000000000000000000000000000000000  //slave切换master之后,会生成了自己的master标识,之前的master节点的标识存到了master_replid2的位置
master_repl_offset:78899  //master已写入偏移量
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576  //复制积压的缓存区大小
repl_backlog_first_byte_offset:1
repl_backlog_histlen:163
repl_backlog_size:1048576  //缓冲区大小
repl_backlog_first_byte_offset:1
repl_backlog_histlen:78899  //缓冲区的数据已有大小(是个环形,跟RedoLog一样会覆盖)

4.解除主从关系

127.0.0.1:6379> slaveof no one
OK

(二) Redis哨兵安装

1.修改sentinel.conf文件

port 26379  //sentinel服务端口
daemonize yes  //是否后台启动
sentinel monitor mymaster 192.168.8.129 6379 2  //sentinel monitor <master-group-name>主节点名称 <ip> <port> <quorum>认为master不可用的sentinel数量  如果要监控多套master,配置多个即可
sentinel down-after-milliseconds mymaster 30000  //30s后联系不到认为关闭
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

2.启动sentinel服务

[root@localhost src]# ./redis-sentinel ../sentinel.conf  //启动sentinel服务

3.连接sentinel服务

[root@localhost src]# ./redis-cli -p 26379 127.0.0.1:26379>

4.查看master的信息

127.0.0.1:26379> sentinel master mymaster  //mymaster为自定义名称
1) "name"
2) "mymaster"
3) "ip"
4) "192.168.8.129"
5) "port"
6) "6379"
7) "runid"
8) "75fb165dd59b82d1154d11939a0b9a45211bf68a"
9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "256"
19) "last-ping-reply"
20) "256"
21) "down-after-milliseconds"
22) "30000"
23) "info-refresh"
24) "5553"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "156216"
29) "config-epoch"
30) "0"
31) "num-slaves"  //从节点数量
32) "2"
33) "num-other-sentinels"  //其他的哨兵数量
34) "2"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"

5.sentinel查询主库地址

连接sentinel客户端

[root@localhost src]# ./redis-cli -p 26379

查询主库地址

127.0.0.1:26379> sentinel get-master-addr-by-name mymaster 1) "192.168.8.128"
2) "6379"

6.sentinel主要指令

指令 作用
SENTINEL CONFIG GET (>= 6.2) 获取全局 Sentinel 配置参数的当前值。指定的名称可以是通配符,类似于Redis CONFIG GET命令。
SENTINEL CONFIG SET (>= 6.2) 设置全局 Sentinel 配置参数的值。
· SENTINEL CKQUORUM 检查当前的 Sentinel 配置是否能够达到故障转移主服务器所需的法定人数,以及授权故障转移所需的参数。此命令应用于监控系统以检查 Sentinel 部署是否正常。
SENTINEL FLUSHCONFIG 强制 Sentinel 在磁盘上重写其配置,包括当前 Sentinel 状态。通常 Sentinel 会在每次状态发生变化时重写配置(在重启后保留在磁盘上的状态子集的上下文中)。然而,有时配置 文件可能会因为操作错误、磁盘故障、软件包升级脚本或配置管理器而丢失。在这些情况下,强制 Sentinel 重写配置文件的方法很方便。即使 先前的配置文件完全丢失,此命令也有效。
SENTINEL FAILOVER 强制进行故障转移,就好像主服务器不可访问一样,并且无需征求其他Sentinel的同意(但是将发布新版本的配置,以便其他 Sentinel 更新其配置)。
SENTINEL GET-MASTER-ADDR-BY-NAME 返回具有该名称的主机的ip和端口号。如果此主服务器正在进行故障转移或成功终止,它将返回提升副本的地址和端口。
SENTINEL INFO-CACHE ( ) 从主服务器和副本服务器 >= 3.2返回缓存的输出。INFO
SENTINEL IS-MASTER-DOWN-BY-ADDR 从当前 Sentinel 的角度检查ip:port指定的主服务器是否已关闭。该命令主要供内部使用。
SENTINEL MASTER 显示指定主站的状态和信息。
SENTINEL MASTERS 显示受监控的主控列表及其状态。
SENTINEL MONITOR 启动 Sentinel 的监控。有关详细信息,请参阅在运行时重新配置 Sentinel部分。
SENTINEL MYID (>= 6.2) 返回 Sentinel 实例的ID。
SENTINEL PENDING-SCRIPTS 此命令返回有关未决脚本的信息。
SENTINEL REMOVE 停止 Sentinel 的监控。有关详细信息,请参阅在运行时重新配置 Sentinel部分。
SENTINEL REPLICAS (>= 5.0) 显示此主服务器的副本列表及其状态。
SENTINEL SENTINELS 显示该 master 的哨兵实例列 表及其状态。
SENTINEL SET 设置 Sentinel 的监控配置。有关详细信息,请参阅在运行时重新配置 Sentinel部分。
SENTINEL SIMULATE-FAILURE (crash-after-election|crash- after-promotion|help) (>= 3.2) 此命令模拟不同的 Sentinel 崩溃场景。
SENTINEL RESET 此命令将重置所有具有匹配名称的主机。模式参数是一个全局样式的模式。重置过程会清除master中的任何先前状态(包括正在进行的故障转移),并删除已发现并与master关联的每个副本和哨兵。

出于连接管理和管理目的,Sentinel 支持以下 Redis 命令子集

指令 作用
ACL (>= 6.2) 此命令管理 Sentinel 访问控制列表。有关详细信息,请参阅ACL文档页面和Sentinel 访问控制列表身份验证。
AUTH (>= 5.0.1) 验证客户端连接。有关详细信息,请参阅AUTH命令和使用身份验证配置 Sentinel 实例部分。
CLIENT 此命令管理客户端连接。有关更多信息,请参阅CLIENT命令。
COMMAND (>= 6.2) 此命令返回有关命令的信息。有关详细信息, 请参阅该COMMAND命令及其各种子命令。
HELLO (>= 6.0) 切换连接的协议。有关详细信息,请参阅HELLO命令。
INFO 返回有关 Sentinel 服务器的信息和统计信息。有关更多信息,请参阅INFO命令。
PING 这个命令只返回PONG。
ROLE 此命令返回字符串“sentinel”和受监控的主机列表。有关详细信息,请参阅ROLE命令。
SHUTDOWN 关闭 Sentinel 实例。

7.模拟主服务器挂掉

我们将主服务器192.168.8.129关闭,看看有什么变化

[root@localhost src]# ./redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.8.127,port=6379,state=online,offset=2323 10,lag=0
slave1:ip=192.168.8.128,port=6379,state=online,offset=2323 10,lag=1
master_replid:d1274cc57aa3a2f1fed3068a429b972d6268453d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:232310
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:232310
127.0.0.1:6379> shutdown  //执行服务关闭

我们再查看另外的2个实例的信息(由于切换需要时间,所以不会马上变更) 过了一会儿再查看192.168.8.128的信息,我们发现128升级为主了。

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.8.127,port=6379,state=online,offset=2782 14,lag=1
master_replid:b32f0f1140789e7d0e30c88e717730cbd93dd3d8
master_replid2:d1274cc57aa3a2f1fed3068a429b972d6268453d
master_repl_offset:278355
second_repl_offset:233876
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:278355

192.168.8.127的信息,我们发现127变成了128的主

127.0.0.1:6379> info replication # Replication
role:slave
master_host:192.168.8.128
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:274802
slave_priority:100

(三) Redis集群安装

RedisCluster至少得三主三从 6个节点

6节点分别以127、128、129 3台机器的6380、6381端口

复制原有安装文件,把原有文件改成6380

cp -r redis-6.0.16 redis-6.0.16-6381
mv redis-6.0.16 redis-6.0.16-6380

1.修改redis.conf文件

#bind 127.0.0.1
protected-mode no
daemonize yes
cluster-enabled yes  //开启集群
cluster-config-file nodes-6380.conf  //不同的端口实例不同,比如6381就是nodes-6381.conf
pidfile /var/run/redis_6380.pid  //不同的端口实例不同,比如6381就是redis_6381.pid

2.开启Cluster集群

[root@localhost src]# ./redis-cli --cluster create
192.168.8.129:6380 192.168.8.129:6381 192.168.8.128:6381
192.168.8.128:6380 192.168.8.127:6380 192.168.8.127:6381  --cluster-replicas 1

如果报非空,删除相关节点的数据,以及cluster-config-file配置的文件

3.查看集群信息

127.0.0.1:6380> cluster nodes
ed1d6852839ea0f4eccb3231d9230a701a079783
192.168.8.129:6380@16380 myself,master - 0 1657818165000 1
connected 0-5460
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72
192.168.8.128:6381@16381 master - 0 1657818166000 3
connected 5461-10922
f639ac4eee5d79f82e27d7a5b038eeff9d6a4ca8
192.168.8.127:6381@16381 slave
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72 0 1657818165784 3
connected
8df23b5a556a32c4b65d228250f6cbddb18bfaf4
192.168.8.128:6380@16380 slave
ed1d6852839ea0f4eccb3231d9230a701a079783 0 1657818166788 1
connected
abe5ae19378385e1c8f9fb7c93a702343947e216
192.168.8.127:6380@16380 master - 0 1657818162000 5
connected 10923-16383
4d0fcb91f0afa7eaf6cba415249fe6f8baa4c2e8
192.168.8.129:6381@16381 slave
abe5ae19378385e1c8f9fb7c93a702343947e216 0 1657818167791 5
connected

4.模拟服务器宕机

模拟129的6380宕机,我们发现129:6380的slave 128:6380自动升为主。

127.0.0.1:6380> cluster nodes
4d0fcb91f0afa7eaf6cba415249fe6f8baa4c2e8
192.168.8.129:6381@16381 slave
abe5ae19378385e1c8f9fb7c93a702343947e216 0 1657819837000 5
connected
abe5ae19378385e1c8f9fb7c93a702343947e216
192.168.8.127:6380@16380 master - 0 1657819833000 5
connected 10923-16383
f639ac4eee5d79f82e27d7a5b038eeff9d6a4ca8
192.168.8.127:6381@16381 slave
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72 0 1657819836183 3
connected
ed1d6852839ea0f4eccb3231d9230a701a079783
192.168.8.129:6380@16380 master,fail - 1657819132867
1657819129000 1 disconnected
8df23b5a556a32c4b65d228250f6cbddb18bfaf4
192.168.8.128:6380@16380 myself,master - 0 1657819835000 7
connected 0-5460
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72
192.168.8.128:6381@16381 master - 0 1657819837187 3
connected 5461-10922

5.添加节点(集群扩容)

我现在添加一个节点 192.168.8.137:6380实例,我希望加到cluster集群

在随便现有的clusternode节点中执行: 第一个参数是要添加的节点,第二个参数为已有的cluster集群随机一个节点

./redis-cli --cluster add-node 192.168.8.137:6380 192.168.8.128:6380

查看nodes节点

127.0.0.1:6381> cluster nodes
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72
192.168.8.128:6381@16381 myself,master - 0 1657903080000 3
connected 5461-10922
abe5ae19378385e1c8f9fb7c93a702343947e216
192.168.8.127:6380@16380 master - 0 1657903081336 5
connected 10923-16383
4d0fcb91f0afa7eaf6cba415249fe6f8baa4c2e8
192.168.8.129:6381@16381 slave
abe5ae19378385e1c8f9fb7c93a702343947e216 0 1657903081000 5
connected
8df23b5a556a32c4b65d228250f6cbddb18bfaf4
192.168.8.128:6380@16380 master - 0 1657903082000 7
connected 0-5460
f639ac4eee5d79f82e27d7a5b038eeff9d6a4ca8
192.168.8.127:6381@16381 slave
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72 0 1657903079000 3
connected
143bb59351740be6087766df8af135d22679c7f9
192.168.8.137:6380@16380 master - 0 1657903082339 0
connected
ed1d6852839ea0f4eccb3231d9230a701a079783
192.168.8.129:6380@16380 slave
8df23b5a556a32c4b65d228250f6cbddb18bfaf4 0 1657903080333 7
connected

我们发现,137的6380节点已经到了cluster集群。但是是没有分配虚拟槽 的,所以要进行槽的分配

6.数据迁移

  (1) 准备分配槽

[root@localhost src]# ./redis-cli --cluster reshard
192.168.8.137:6380   //对137:6380进行槽分配
>>> Performing Cluster Check (using node
192.168.8.137:6380)
M: 143bb59351740be6087766df8af135d22679c7f9
192.168.8.137:6380 slots:[5461-6460] (1000 slots) master
S: ed1d6852839ea0f4eccb3231d9230a701a079783
192.168.8.129:6380 slots: (0 slots) slave replicates 8df23b5a556a32c4b65d228250f6cbddb18bfaf4 S: f639ac4eee5d79f82e27d7a5b038eeff9d6a4ca8
192.168.8.127:6381 slots: (0 slots) slave replicates e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72 M: abe5ae19378385e1c8f9fb7c93a702343947e216
192.168.8.127:6380 slots:[10923-16383] (5461 slots) master 1 additional replica(s)
M: 8df23b5a556a32c4b65d228250f6cbddb18bfaf4
192.168.8.128:6380 slots:[0-5460] (5461 slots) master 1 additional replica(s)
S: 4d0fcb91f0afa7eaf6cba415249fe6f8baa4c2e8
192.168.8.129:6381 slots: (0 slots) slave replicates abe5ae19378385e1c8f9fb7c93a702343947e216 M: e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72
192.168.8.128:6381 slots:[6461-10922] (4462 slots) master 1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

  (2) 输入要转移多少个槽

How many slots do you want to move (from 1 to 16384)?   1- 16384之间

  (3) 输入接收节点ID

当前137:6380为143bb59351740be6087766df8af135d22679c7f9

What is the receiving node ID?

  (4) hash槽从哪里拿 all是所有节点 done是输入源节点之后输入done

How many slots do you want to move (from 1 to 16384)? 2000
What is the receiving node ID?
143bb59351740be6087766df8af135d22679c7f9
Please enter all the source node IDs. Type 'all' to use all the nodes as source nodes for the
hash slots. Type 'done' once you entered all the source nodes IDs.
Source node #1: e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72
Source node #2: done

我们发现相关槽的数据已经移到了新137:6380的节点

127.0.0.1:6380> keys *
1) "hhu"
2) "hhh"
3) "c"
4) "hhhhh"

7.删除节点(集群缩容)

删除节点:第一个参数集群中的随机一个节点 第二个参数要删除的节点

redis-cli --cluster del-node 127.0.0.1:7000 192.168.8.128:

如果删除主节点,必须对数据进行迁移,让主节点为空

比如为要删除192.168.8.137:6080节点

先把数据迁移192.168.8.128:6381

[root@localhost src]# ./redis-cli --cluster reshard
192.168.8.128:6381
>>> Performing Cluster Check (using node
192.168.8.128:6381)
M: e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72
192.168.8.128:6381 slots:[8461-10922] (2462 slots) master 1 additional replica(s)
M: abe5ae19378385e1c8f9fb7c93a702343947e216
192.168.8.127:6380 slots:[10923-16383] (5461 slots) master 1 additional replica(s)
S: 4d0fcb91f0afa7eaf6cba415249fe6f8baa4c2e8
192.168.8.129:6381 slots: (0 slots) slave replicates abe5ae19378385e1c8f9fb7c93a702343947e216
M: 8df23b5a556a32c4b65d228250f6cbddb18bfaf4
192.168.8.128:6380 slots:[0-5460] (5461 slots) master 1 additional replica(s)
S: f639ac4eee5d79f82e27d7a5b038eeff9d6a4ca8
192.168.8.127:6381 slots: (0 slots) slave replicates e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72
M: 143bb59351740be6087766df8af135d22679c7f9
192.168.8.137:6380 slots:[5461-8460] (3000 slots) master
S: ed1d6852839ea0f4eccb3231d9230a701a079783
192.168.8.129:6380 slots: (0 slots) slave replicates 8df23b5a556a32c4b65d228250f6cbddb18bfaf4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 3000
What is the receiving node ID?
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the
hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #1: 143bb59351740be6087766df8af135d22679c7f9
Source node #2: done

删除节点:

[root@localhost src]# ./redis-cli --cluster del-node
192.168.8.128:6381
143bb59351740be6087766df8af135d22679c7f9
>>> Removing node 143bb59351740be6087766df8af135d22679c7f9
from cluster 192.168.8.128:6381
>>> Sending CLUSTER FORGET messages to the cluster...
>>> Sending CLUSTER RESET SOFT to the deleted node.
[root@localhost src]# ./redis-cli -p 6380
127.0.0.1:6380> cluster nodes   //查看节点信息,已经删除了137:6080节点
4d0fcb91f0afa7eaf6cba415249fe6f8baa4c2e8
192.168.8.129:6381@16381 slave
abe5ae19378385e1c8f9fb7c93a702343947e216 0 1657919426908 5
connected
abe5ae19378385e1c8f9fb7c93a702343947e216
192.168.8.127:6380@16380 master - 0 1657919426000 5
connected 10923-16383
f639ac4eee5d79f82e27d7a5b038eeff9d6a4ca8
192.168.8.127:6381@16381 slave
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72 0 1657919425905 9
connected
ed1d6852839ea0f4eccb3231d9230a701a079783
192.168.8.129:6380@16380 slave
8df23b5a556a32c4b65d228250f6cbddb18bfaf4 0 1657919425000 7
connected
8df23b5a556a32c4b65d228250f6cbddb18bfaf4
192.168.8.128:6380@16380 myself,master - 0 1657919427000 7
connected 0-5460
e1b44fb5617b3c835238ca8a9bdbc86aa2dcec72
192.168.8.128:6381@16381 master - 0 1657919425000 9
connected 5461-10922

8.Cluster其他指令

官网地址:Commands | Redis

集群相关命令(需要进入客户端)

指令 作用
cluster info 打印集群的信息
cluster nodes 列出集群当前已知的所有节点(node),以及这些节点的 相关信息。
cluster meet 将ip和port所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id> 从集群中移除node_id指定的节点(保证空槽道)。
cluster replicate <node_id> 将当前节点设置为node_id指定的节点的 从节点。
cluster saveconfig 将节点的配置文件保存到硬盘里面。

槽slot命令

指令 作用
cluster addslots [slot …] 将一个或多个槽(slot)指派(assign)给当前节点。
cluster delslots [slot …] 移除一个或多个槽对当前节点的指派。 
cluster flushslots 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot node <node_id> 将槽slot指派给node_id指定的节点, 如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派。
cluster setslot migrating <node_id> 将本节点的槽slot迁移到node_id指定的节点中。
cluster setslot importing <node_id> 从node_id指定的节点中导入槽slot到本节点。
cluster setslot stable 取消对槽slot的导入(import)或者迁移 (migrate)。

键命令

指令 作用
cluster keyslot 计算键key应该被放置在哪个槽上。
cluster countkeysinslot 返回槽slot目前包含的键值对数量。
cluster getkeysinslot 返回count个slot槽中的键。

Redis基于Linux系统的安装与集群搭建相关推荐

  1. ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建

    ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...

  2. linux系统下安装elasticsearch集群踩过的坑

    公司之前用的solr发现不太好用准备替换成es于是乎开始大刀阔斧的更换搜索服务器,本着有新版本不用旧版本的原则,所以刚搭好的基础环境,又得重新部署一遍.(重要的事记得说三遍!!! 记笔记真的很重要,好 ...

  3. linux系统下RocketMQ的集群搭建

    前提已配置java环境 # java -version java version "1.8.0_271" Java(TM) SE Runtime Environment (buil ...

  4. linux集群管理平台,基于Linux平台的高可用集群管理系统的研究与实现

    摘要: 集群管理系统的高可用性是指其能够连续地对外提供服务,本文针对集群系统的高可用性,以开源的集群搭建和管理软件KUSU为基础,以集群管理节点的双机热备份技术理论为支撑,以实现集群系统的帮障检测与业 ...

  5. 基于linux的oracle_rac实时应用集群研究,基于Linux的OracleRAC实时应用集群研究毕业设计论文(资料4)...

    <基于Linux的OracleRAC实时应用集群研究毕业设计论文.doc>由会员分享,可免费在线阅读全文,更多与<基于Linux的OracleRAC实时应用集群研究毕业设计论文> ...

  6. 基于linux的oracle_rac实时应用集群研究,基于Linux的OracleRAC实时应用集群研究毕业设计论文...

    <基于Linux的OracleRAC实时应用集群研究毕业设计论文.doc>由会员分享,可免费在线阅读全文,更多与<基于Linux的OracleRAC实时应用集群研究毕业设计论文> ...

  7. linux下离线安装k8s集群1.19.4附带nfs存储(kubeadm方式)

    linux下离线安装k8s集群1.19.4附带nfs存储 活动地址:毕业季·进击的技术er  一,环境简介 kubernetes-1.19.4集群部署计划 序号 服务器配置 IP地址 操作系统 备注 ...

  8. Windows家庭版下基于Docker的hadoop、Spark集群搭建

    Windows家庭版下基于Docker的hadoop.Spark集群搭建 目录 Windows家庭版下基于Docker的hadoop.Spark集群搭建 1.实验目的 2.实验平台 3.实验内容和要求 ...

  9. 基于slurm框架的GPU服务器集群搭建方法

    基于slurm框架的GPU服务器集群搭建操作文档 1. 环境基础 2. 环境配置 2.1 hostname配置 2.2 关闭SELinux (master, slave) 2.3 关闭Firewall ...

最新文章

  1. 如何使用SQL Server 2008打开和关闭IDENTITY_INSERT?
  2. 交叉报表crosstab隐藏列名显示_SAP软件 报表查询之 输出格式设置
  3. [Python] 网络爬虫和正则表达式学习总结
  4. hc sr04流程图_HC-SR04超声模块示例代码/原理图/说明书等全套资料
  5. Windows Phone开发(18):变形金刚第九季——变换 转:http://blog.csdn.net/tcjiaan/article/details/7385056...
  6. DOM节点的获取及创建
  7. javap 指令集 (转)
  8. “阿里味” PUA 编程语言火上GitHub热榜,标星1.9K!
  9. 非华为电脑安装华为电脑管家,实现与手机平板的多屏协同
  10. Qt 之 QQ系统表情(五)
  11. 嵌入式入门学习的必要步骤
  12. php756中医,百人诈骗团伙冒充老中医微信钓鱼九千余人被骗
  13. 数据结构大作-学生信息管理系统
  14. 细菌生物农药的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. OpenChatKit :开源的 ChatGPT ,开箱即用!前OpenAI团队打造,GitHub 7000+星
  16. mysql 电商实战_SQL电商数据分析实战
  17. MRC误码率的matlab仿真
  18. 怿星科技参加2022(第六届)高工智能汽车年会
  19. 移民加拿大,你们后悔了么?
  20. Python 函数传参详解

热门文章

  1. python+selenium+优学院刷课
  2. 【Java练习题】Java 程序的输出 | 第十套(垃圾回收)
  3. 电子脂肪秤的ADC芯片CS1256功能
  4. 服务器重置消失了怎么办,饥荒服务器突然重置后如何恢复 | 手游网游页游攻略大全...
  5. 31省工业互联网路线图公布!
  6. clementine for Mac(多平台音乐管理播放软件)
  7. 开发板搭建pppd客户端
  8. 结合个人经历总结的前端入门方法(这才是真的入门经典)
  9. SharePoint中跨列表查询
  10. 码农逆行被拦,跪下痛哭!