什么是非关系型数据库,Redis概述、安装及部署Redis群集(下)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 什么是非关系型数据库,Redis概述、安装及部署Redis群集(下)

-redis其他数据管理命令——keys


******key相关命令
keys——获取符合规则的键值列表(*?)
*——表示任意字符
?——表示一个字符
[root@redis ~]# redis-cli (创建多个键值)
127.0.0.1:6379> set a1 1
OK
127.0.0.1:6379> set a2 2
OK
127.0.0.1:6379> set a3 3
OK
127.0.0.1:6379> set a4 4
OK
127.0.0.1:6379> set a5 5
OK
127.0.0.1:6379> keys * (查看所有键)
1) "a4"
2) "a5"
3) "mylist"
4) "a2"
5) "a1"
6) "key:__rand_int__"
7) "aaa"
8) "a3"
9) "counter:__rand_int__"
127.0.0.1:6379> set b1 1  (创建一个以b开头的键)
OK
127.0.0.1:6379> keys b*   (查看以b开头的键)
1) "b1"
127.0.0.1:6379> set b222 222 (创建一个新的键)
OK
127.0.0.1:6379> keys b?   (查看以b开头的后面任意一个字符的键)
1) "b1"
127.0.0.1:6379> keys b??? (查看以b开头的后面任意三个字符的键)
1) "b222"

-redis其他数据管理命令——exists

******exists——判断键值是否存在
integer——返回值1表示存在,0表示不存在
[root@redis ~]# redis-cli 
127.0.0.1:6379> EXISTS aaa  (判断aaa键值是否存在)
(integer) 1 (返回1说明存在)
127.0.0.1:6379> EXISTS bbb
(integer) 0 (返回0说明不存在)
127.0.0.1:6379> keys *  (查看所有键值,确认bbb是不存在的,aaa存在)
 1) "a4"
 2) "a5"
 3) "mylist"
 4) "a2"
 5) "b222"
 6) "a1"
 7) "key:__rand_int__"
 8) "aaa"
 9) "a3"
10) "b1"
11) "counter:__rand_int__"

-redis其他数据管理命令——del

******del——删除当前数据库的指定键值
[root@redis ~]# redis-cli 
127.0.0.1:6379> keys *  (先查看所有键值)
 1) "a4"
 2) "a5"
 3) "mylist"
 4) "a2"
 5) "b222"
 6) "a1"
 7) "key:__rand_int__"
 8) "aaa"
 9) "a3"
10) "b1"
11) "counter:__rand_int__"
127.0.0.1:6379> del aaa  (删除aaa这个键值)
(integer) 1
127.0.0.1:6379> get aaa  (使用get查看aaa键的值发现无法查看)
(nil)
127.0.0.1:6379> keys *   (再次查看所有键值发现aaa键值已经没了)
 1) "a4"
 2) "a5"
 3) "mylist"
 4) "a2"
 5) "b222"
 6) "a1"
 7) "key:__rand_int__"
 8) "a3"
 9) "b1"
10) "counter:__rand_int__"

-redis其他数据管理命令——type

******type——获取键对应的值的类型
[root@redis ~]# redis-cli 
127.0.0.1:6379> keys *  (查看所有键值)
 1) "a4"
 2) "a5"
 3) "mylist"
 4) "a2"
 5) "b222"
 6) "a1"
 7) "key:__rand_int__"
 8) "a3"
 9) "b1"
10) "counter:__rand_int__"
127.0.0.1:6379> TYPE a1 (查看a1键值的类型)
string  (string表示字符串类型)

-redis其他数据管理命令——rename

******rename——重命名
rename 源键 目标键
——————————————————————————————————————注意——————————————————————————————————————
使用rename会直接覆盖目标键,无论是否存在,即不管有没有数据都会被最后输入的新键名覆盖,就是说就算有了这个键命,也会被刚刚输入的新键名覆盖。
在真实环境中一定要先使用exists先查看目标是否存在然后在决定是否使用rename
————————————————————————————————————————————————————————————————————————————————
[root@redis ~]# redis-cli 
127.0.0.1:6379> keys * (查看所有的键值)
 1) "a4"
 2) "a5"
 3) "mylist"
 4) "a2"
 5) "b222"
 6) "a1"
 7) "key:__rand_int__"
 8) "a3"
 9) "b1"
10) "counter:__rand_int__"
127.0.0.1:6379> get a4 (查看a4的值)
"4"
127.0.0.1:6379> rename a4 b4 (重命名a4为b4)
OK
127.0.0.1:6379> keys *       (再次查看所有的键发现没有a4,但是有b4)
 1) "a5"
 2) "mylist"
 3) "a2"
 4) "b222"
 5) "a1"
 6) "key:__rand_int__"
 7) "b4"
 8) "a3"
 9) "b1"
10) "counter:__rand_int__"
127.0.0.1:6379> get b4  (查看b4的值,发现被a4的值覆盖了)
"4"
127.0.0.1:6379> get a4  (查看a4的值,发现无法查询)
(nil)
127.0.0.1:6379> get a1  (查看a1键的值)
"1"
127.0.0.1:6379> get a2  (查看a2键的值)
"2" 
127.0.0.1:6379> rename a1 a2 (修改a1键名为a2)
OK
127.0.0.1:6379> get a2  (查看a2的值发现呗原来a1的值覆盖了)
"1"
127.0.0.1:6379> get a1  (查看a1的值发现无法查询)
(nil)

-redis其他数据管理命令——renamenx

******renamenx——对已有键进行重命名,并且检测新的名称是否存在,如果新的名称存在,那么则不进行重命名,在真实环境中推荐使用,避免了rename错误覆盖键值
renamenx 源键 目标键 (返回1为成功,0为失败)
[root@redis ~]# redis-cli 
127.0.0.1:6379> keys * (查看所有键值)
1) "a5"
2) "mylist"
3) "a2"
4) "b222"
5) "key:__rand_int__"
6) "b4"
7) "a3"
8) "b1"
9) "counter:__rand_int__"
127.0.0.1:6379> RENAMENX a5 a6 (把a5键名改为a6)
(integer) 1 (返回1表示修改成功)
127.0.0.1:6379> renamenx a2 b1 (把a2键名改为b1)
(integer) 0 (返回0表示修改失败)
127.0.0.1:6379> keys * (再次查看所有键值,发现没有了a5,多了a6,a2存在,b1也存在)
1) "mylist"
2) "a2"
3) "b222"
4) "key:__rand_int__"
5) "a6"
6) "b4"
7) "a3"
8) "b1"
9) "counter:__rand_int__"

-redis其他数据管理命令——dbsize

******dbsize——查看当前数据库中键的数量
[root@redis ~]# redis-cli 
127.0.0.1:6379> dbsize (查看数据库中所有键的数量)
(integer) 9
127.0.0.1:6379> keys * (查看所有键值发现有9个)
1) "mylist"
2) "a2"
3) "b222"
4) "key:__rand_int__"
5) "a6"
6) "b4"
7) "a3"
8) "b1"
9) "counter:__rand_int__"

-redis多数据常用命令

******redis默认的数据库有16个即0——15,即使用db 0 —— db 15来表示,默认连接的数据库为db 0
(1)select 数据库序号  ————切换到指定数据库
[root@redis ~]# redis-cli 
127.0.0.1:6379> SELECT 10     (切换到10号数据库)
OK
127.0.0.1:6379[10]> SELECT 15 (切换到15号数据库)
OK
127.0.0.1:6379[15]> SELECT 0  (切换到0号数据库)
OK
127.0.0.1:6379> 
(2)move 键名 数据库序号 ————移动当前数据库的指定键值到指定的数据库,返回1表示成功,返回0表示失败。
————————————————————————————注意——————————————————————————
如果移动的键名在目标数据库中存在,那么是无法移动成功的
——————————————————————————————————————————————————————————
[root@redis ~]# redis-cli 
127.0.0.1:6379> select 15   (切换到15号数据库)
OK
127.0.0.1:6379[15]> keys *  (查看当前数据库的所有键值,发现没有任何键值)
(empty list or set)
127.0.0.1:6379[15]> set aaa 1 (创建一个键名为aaa值为1的键值)
OK
127.0.0.1:6379[15]> keys *    (查看所有键值)
1) "aaa"
127.0.0.1:6379[15]> move aaa 10 (移动aaa这个键到10号数据库)
(integer) 1 (返回1说明移动成功)
127.0.0.1:6379[15]> keys *      (再次查看当前数据的所有键值,发现没有任何键值)
(empty list or set)
127.0.0.1:6379[15]> select 10   (切换到10号数据库)
OK
127.0.0.1:6379[10]> keys *      (查看当前数据库所有键值,发现多了aaa键)
1) "aaa"
127.0.0.1:6379[10]> SELECT 5    (切换到5号数据库)
OK
127.0.0.1:6379[5]> set aaa 1    (创建名为aaa的键值为1)
OK 
127.0.0.1:6379[5]> move aaa 10  (移动aaa键值到10号库)
(integer) 0 (返回0说明移动失败)
127.0.0.1:6379[5]> keys * (查看当前数据库的所有键,发现有一个aaa键值)
1) "aaa"
(3)flushdb ————清除当前数据库内所有数据
————————————————————————注意————————————————————————
执行flushdb会清空当前数据库的所有数据要谨慎使用
————————————————————————————————————————————————————
[root@redis ~]# redis-cli 
127.0.0.1:6379> select 10  (切换到10号数据库)
OK
127.0.0.1:6379[10]> keys * (查看所有键值)
1) "aaa"
127.0.0.1:6379[10]> flushdb (清除当前数据库内所有数据)
OK
127.0.0.1:6379[10]> keys *  (再次查看所有键值,发现什么都没有了)
(empty list or set)

三、redis实战——搭建redis群集


(1)redis群集原理


redis群集架构:


redis 群集采用虚拟槽分区,将所有的数据根据算法映射到0~16383整数槽中,并且是一个无中心的结构,每个节点都保存数据和整个群集的状态


群集角色


Master:Master之间分配虚拟槽slots

Slave:Slave向它指向的Master同步数据


群集节点使用的TCP端口


6379端口用于客户端的连接,16379端口用于群集总线


(2)搭建redis群集


为了节省资源,本次实验在单台服务器上搭建redis群集,通过不同的TCP端口去启动多个实例,模拟多台独立的redis服务器组成的群集


注意:至少需要六个实例也就是六个redis服务器才能组成群集,3主3从会自动分配

******本次实验思路为:在根目录下创建一个新目录,用于存放多实例配置文件,即使用多个redis主配置文件,但是每台实例的端口都不同,使用这六个主配置文件启动实例,并且搭建redis群集
******(1)首先先关闭redis服务器
[root@redis ~]# /etc/init.d/redis_6379 stop (关闭redis)
Stopping ...
Redis stopped
[root@redis ~]# netstat -anpt | grep redis (检查是否成功关闭)
******(2)创建新的群集目录,并且分别创建不同的redis目录
[root@redis ~]# mkdir -p /redis/{6001..6006} (这里利用6001——6006来区分多态实例)
[root@redis ~]# ll /redis/
总用量 0
drwxr-xr-x 2 root root 6 3月   8 01:42 6001
drwxr-xr-x 2 root root 6 3月   8 01:42 6002
drwxr-xr-x 2 root root 6 3月   8 01:42 6003
drwxr-xr-x 2 root root 6 3月   8 01:42 6004
drwxr-xr-x 2 root root 6 3月   8 01:42 6005
drwxr-xr-x 2 root root 6 3月   8 01:42 6006
******(3)复制多个主配置文件
[root@redis ~]# cat /usr/src/redis-3.2.9/redis.conf | grep -v "^#"| grep -v "^$" > redis.conf (先保存一份当家目录)
[root@redis ~]# vim redis.conf (修改为:也可以之间复制,修改的行分别为1、3、7、9、11、20、35、36、37)
bind 192.168.100.7  #根据实际情况去修改ip地址,群集节点间必须可以进行正常通信,网络层面需要开启相应端口的访问权限
protected-mode yes
port 6001           #修改端口号
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes  #运行redis在后台运行
supervised no
pidfile /var/run/redis_6001.pid  #修改pid文件,每个实例都要修改成指定的
loglevel notice
logfile "/redis/6001/redis_6001.log"  #修改日志文件,每个实例都要修改成指定的
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /redis/6001 #每个实例要修改成对应的目录
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
cluster-enabled yes  #开启群集
cluster-config-file nodes-6001.conf #群集配置文件,每个实例都要有相对应的配置文件
cluster-node-timeout 15000  #请求超时时长,默认15秒,根据实际情况修改
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
保存退出
[root@redis ~]# cp redis.conf /redis/6001(依次复制文件到各个实例的目录)
[root@redis ~]# cp redis.conf /redis/6002
[root@redis ~]# cp redis.conf /redis/6003
[root@redis ~]# cp redis.conf /redis/6004
[root@redis ~]# cp redis.conf /redis/6005
[root@redis ~]# cp redis.conf /redis/6006
[root@redis ~]# sed -i 's/6001/6002/g' /redis/6002/redis.conf  (使用sed替换配置文件中的6001为各个实例的端口号)
[root@redis ~]# sed -i 's/6001/6003/g' /redis/6003/redis.conf 
[root@redis ~]# sed -i 's/6001/6004/g' /redis/6004/redis.conf 
[root@redis ~]# sed -i 's/6001/6005/g' /redis/6005/redis.conf 
[root@redis ~]# sed -i 's/6001/6006/g' /redis/6006/redis.conf 
******(4)启动各个实例
[root@redis ~]# redis-server /redis/6001/redis.conf  (依次使用redis-server启动各个实例)
[root@redis ~]# redis-server /redis/6002/redis.conf 
[root@redis ~]# redis-server /redis/6003/redis.conf 
[root@redis ~]# redis-server /redis/6004/redis.conf 
[root@redis ~]# redis-server /redis/6005/redis.conf 
[root@redis ~]# redis-server /redis/6006/redis.conf 
[root@redis ~]# netstat -anpt | grep redis (检查端口,确定各个实例都已经正常启动)
tcp        0      0 192.168.100.7:6001      0.0.0.0:*               LISTEN      1461/redis-server 1 
tcp        0      0 192.168.100.7:6002      0.0.0.0:*               LISTEN      1465/redis-server 1 
tcp        0      0 192.168.100.7:6003      0.0.0.0:*               LISTEN      1470/redis-server 1 
tcp        0      0 192.168.100.7:6004      0.0.0.0:*               LISTEN      1474/redis-server 1 
tcp        0      0 192.168.100.7:6005      0.0.0.0:*               LISTEN      1478/redis-server 1 
tcp        0      0 192.168.100.7:6006      0.0.0.0:*               LISTEN      1482/redis-server 1 
tcp        0      0 192.168.100.7:16001     0.0.0.0:*               LISTEN      1461/redis-server 1 
tcp        0      0 192.168.100.7:16002     0.0.0.0:*               LISTEN      1465/redis-server 1 
tcp        0      0 192.168.100.7:16003     0.0.0.0:*               LISTEN      1470/redis-server 1 
tcp        0      0 192.168.100.7:16004     0.0.0.0:*               LISTEN      1474/redis-server 1 
tcp        0      0 192.168.100.7:16005     0.0.0.0:*               LISTEN      1478/redis-server 1 
tcp        0      0 192.168.100.7:16006     0.0.0.0:*               LISTEN      1482/redis-server 1 
至此redis群集搭建完成!!!

(3)配置Ruby环境-redis-trib.rb脚本


因为redis3.0之后开始支持群集功能,官方退出了一个管理集群的工具,一个Ruby脚本————redis-trib.rb


该脚本集成在redis的源码SRC目录下,所以需要系统安装配置ruby环境,才可以使用该脚本进行redis群集的创建、配置和管理。

******(1)安装ruby工具
[root@redis ~]# yum -y install ruby rubygems
。。。。。。
完毕!
******(2)上传文件,使用脚本安装redis群集
[root@redis ~]# ll
总用量 1596
-rw-------. 1 root root    1220 9月   3 2020 anaconda-ks.cfg
-rw-r--r--  1 root root      76 3月   8 01:50 dump.rdb
-rw-r--r--  1 root root   71168 3月   8 02:20 redis-3.2.0.gem
-rw-r--r--  1 root root 1547695 3月   7 06:01 redis-3.2.9.tar.gz
-rw-r--r--  1 root root    1293 3月   8 01:57 redis.conf
[root@redis ~]# gem install redis --version 3.2.0 (安装)
Successfully installed redis-3.2.0
Parsing documentation for redis-3.2.0
Installing ri documentation for redis-3.2.0
1 gem installed
[root@redis ~]# cd /usr/src/redis-3.2.9/src/ (安装完成后会发现/usr/src下多了一个redis目录)
[root@redis src]# ./redis-trib.rb create --replicas 1 192.168.100.7:6001 192.168.100.7:6002 192.168.100.7:6003 192.168.100.7:6004 192.168.100.7:6005 192.168.100.7:6006 (使用脚本安装redis群集,1就是nodeid号)
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.100.7:6001
192.168.100.7:6002
192.168.100.7:6003
Adding replica 192.168.100.7:6004 to 192.168.100.7:6001
Adding replica 192.168.100.7:6005 to 192.168.100.7:6002
Adding replica 192.168.100.7:6006 to 192.168.100.7:6003
M: 86e8a7f5a7c6aa465ee8d20b8a9be340f2fc51b7 192.168.100.7:6001
   slots:0-5460 (5461 slots) master
M: 536694c3cb5084ca424fd8c5f7b39591e5f7dac0 192.168.100.7:6002
   slots:5461-10922 (5462 slots) master
M: c3df16a5c876eca9dc4b409e1a17fa7295c0f88d 192.168.100.7:6003
   slots:10923-16383 (5461 slots) master
S: c3b870daf4dc533c8483b40ea08dde38def5f753 192.168.100.7:6004
   replicates 86e8a7f5a7c6aa465ee8d20b8a9be340f2fc51b7
S: 065d7fbb560dd8cda9a493400eda463bdb1e2e97 192.168.100.7:6005
   replicates 536694c3cb5084ca424fd8c5f7b39591e5f7dac0
S: 3d3d404951283622d56ae045350a04d831825782 192.168.100.7:6006
   replicates c3df16a5c876eca9dc4b409e1a17fa7295c0f88d
Can I set the above configuration? (type 'yes' to accept): yes (输入yes)
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.....
>>> Performing Cluster Check (using node 192.168.100.7:6001)
M: 86e8a7f5a7c6aa465ee8d20b8a9be340f2fc51b7 192.168.100.7:6001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: c3b870daf4dc533c8483b40ea08dde38def5f753 192.168.100.7:6004
   slots: (0 slots) slave
   replicates 86e8a7f5a7c6aa465ee8d20b8a9be340f2fc51b7
S: 065d7fbb560dd8cda9a493400eda463bdb1e2e97 192.168.100.7:6005
   slots: (0 slots) slave
   replicates 536694c3cb5084ca424fd8c5f7b39591e5f7dac0
M: 536694c3cb5084ca424fd8c5f7b39591e5f7dac0 192.168.100.7:6002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: c3df16a5c876eca9dc4b409e1a17fa7295c0f88d 192.168.100.7:6003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 3d3d404951283622d56ae045350a04d831825782 192.168.100.7:6006
   slots: (0 slots) slave
   replicates c3df16a5c876eca9dc4b409e1a17fa7295c0f88d
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
******(3)查看群集状态
[root@redis src]# ./redis-trib.rb check 192.168.100.7:6001 (查看群集状态)
>>> Performing Cluster Check (using node 192.168.100.7:6001)
M: 86e8a7f5a7c6aa465ee8d20b8a9be340f2fc51b7 192.168.100.7:6001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: c3b870daf4dc533c8483b40ea08dde38def5f753 192.168.100.7:6004
   slots: (0 slots) slave
   replicates 86e8a7f5a7c6aa465ee8d20b8a9be340f2fc51b7
S: 065d7fbb560dd8cda9a493400eda463bdb1e2e97 192.168.100.7:6005
   slots: (0 slots) slave
   replicates 536694c3cb5084ca424fd8c5f7b39591e5f7dac0
M: 536694c3cb5084ca424fd8c5f7b39591e5f7dac0 192.168.100.7:6002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: c3df16a5c876eca9dc4b409e1a17fa7295c0f88d 192.168.100.7:6003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 3d3d404951283622d56ae045350a04d831825782 192.168.100.7:6006
   slots: (0 slots) slave
   replicates c3df16a5c876eca9dc4b409e1a17fa7295c0f88d
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

(4)测试

******(1)登录redis群集,进行键值测试
-h:主机
-p:端口
-c:激活群集模式
[root@redis src]# redis-cli -h 192.168.100.7 -p 6001 -c
192.168.100.7:6001> set aaa 111 
-> Redirected to slot [10439] located at 192.168.100.7:6002
OK
192.168.100.7:6002> get aaa
"111"
192.168.100.7:6002> exit

(5)结论


通过这次实验我们可以得知,登录群集的任意一个实例创建键值时,会重定向到其他的服务器上,是按照slot槽点进行分配的


四、扩展——trib.rb脚本的使用


[root@redis ~]# cd /usr/src/redis-3.2.9/src/
[root@redis src]# ./redis-trib.rb help (下列选项使用格式为./redis-trib.rb 选项)
Usage: redis-trib <command> <options> <arguments ...>
  create          host1:port1 ... hostN:portN   ——(创建群集,格式为 主机地址:端口号)
                  --replicas <arg>              ——(replicas参数指定当前创建的redis群集有几个slave节点)
  check           host:port                     ——(检查群集,验证节点是否可用,格式为: 主机地址:端口号)
  info            host:port                     ——(查看群集信息,节点信息,格式为: 主机地址:端口号)
  fix             host:port                     ——(修复群集,格式为: 主机地址:端口号)
                  --timeout <arg>
  reshard         host:port                     ——(在线迁移群集,格式为: form 主机地址:端口号 to 主机地址:端口号 )
                  --from <arg>
                  --to <arg>
                  --slots <arg>
                  --yes
                  --timeout <arg>
                  --pipeline <arg>
  rebalance       host:port                     ——(平衡群集节点的槽点数量,格式为: 主机地址:端口号)
                  --weight <arg>
                  --auto-weights
                  --use-empty-masters
                  --timeout <arg>
                  --simulate
                  --pipeline <arg>
                  --threshold <arg>
  add-node        new_host:new_port existing_host:existing_port ——(在线添加新的群集节点,格式为: 新的主机地址:新的端口号 现有的主机地址:现有的端口号)
                  --slave
                  --master-id <arg>
  del-node        host:port node_id                    ——(在线删除群集节点,格式为: 主机地址:端口号 nodeid号)
  set-timeout     host:port milliseconds               ——(redis群集节点心跳超时设置,默认为15秒,格式为: 主机地址:端口号 指定的超时时间单位是毫秒)
  call            host:port command arg arg .. arg     ——(使命令在所有节点一起执行,谨慎使用)
  import          host:port                            ——(将外部redis节点数据导入群集中)
                  --from <arg>
                  --copy
                  --replace
  help            (show this help)                     ——(显示脚本使用帮助)
For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

如果本文章有不对的地方,请在评论区留言,谢谢!!~


目录
相关文章
|
18天前
|
NoSQL Linux 测试技术
Redis的安装(Linux版)
Redis的安装(Linux版)
166 2
|
27天前
|
NoSQL Linux Redis
linux安装redis5.0.5
linux安装redis5.0.5
43 1
|
28天前
|
NoSQL Linux Redis
linux 下和win下安装redis 并添加开机自启 图文详解
linux 下和win下安装redis 并添加开机自启 图文详解
17 0
|
26天前
|
缓存 NoSQL 算法
17- 数据库有1000万数据 ,Redis只能缓存20w数据, 如何保证Redis中的数据都是热点数据 ?
保证Redis中的20w数据为热点数据,可以通过设置Redis的LFU(Least Frequently Used)淘汰策略。这样,当数据库有1000万数据而Redis仅能缓存20w时,LFU会自动移除使用频率最低的项,确保缓存中的数据是最常使用的。
60 8
|
6天前
|
NoSQL Redis Docker
使用docker安装redis
该文档介绍了如何使用Docker快速搭建Redis数据库,以便于Spring Boot学习。主要内容包括获取Redis镜像、创建容器、配置持久化存储目录和修改默认配置文件,以及检查和访问Redis容器服务。此外,还提到若需外部访问,需开启宿主机防火墙相应端口。注意,本教程不深入讲解Docker,若想深入学习Docker,建议另寻专门课程。
|
7天前
|
NoSQL Redis
mac下安装redis
mac下安装redis
|
8天前
|
消息中间件 NoSQL OLAP
doris数据库是否可以替代redis
【4月更文挑战第20天】doris数据库是否可以替代redis
253 0
|
8天前
|
存储 NoSQL 关系型数据库
Redis_非关系型数据库
Redis_非关系型数据库
|
13天前
|
存储 NoSQL Redis
Docker 安装 Redis 6.2.6
Docker 安装 Redis 6.2.6
25 0
|
17天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
150 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答