Appearance
Redis 管理手册
1. Linux
Set the Linux kernel overcommit memory setting to 1. Add
vm.overcommit_memory = 1to/etc/sysctl.conf. Then, reboot or run the commandsysctl vm.overcommit_memory=1to activate the setting.To ensure the Linux kernel feature Transparent Huge Pages does not impact Redis memory usage and latency, use this command:
Bash$ echo never > /sys/kernel/mm/transparent_hugepage/enabled防火墙打开
6379/tcp端口(参考:Linux 防火墙)
2. redis.conf
2.1. 单例
参考配置:redis.conf

2.1.1. bind 127.0.0.1 -::1 10.10.0.198
绑定 IP 地址。
Note:
bind 0.0.0.0表示监听所有可用的网络接口。
2.1.2. daemonize yes
把 Redis 设置为守护进程启动。
此时,默认的 logfile 配置项的值为 "",日志将会被输出到 /dev/null 以屏蔽日志,因此我们同时需要修改下 logfile 配置,这里我们把日志文件放到 /var/log/redis.log(需要提前创建文件,并设置好权限)。
2.1.3. logfile /var/log/redis.log
修改日志文件路径(注意配置文件权限)。
2.1.4. dir ./data/
配置好日志文件之后,最好也修改下持久化文件的存放目录并配置好文件夹权限,否则很容易遇到以下错误提示:
Text
...
46643:M 14 Sep 2022 22:33:41.032 * 1 changes in 3600 seconds. Saving...
46643:M 14 Sep 2022 22:33:41.033 * Background saving started by pid 119555
119555:C 14 Sep 2022 22:33:41.033 # Failed opening the temp RDB file temp-119555.rdb (in server root dir /usr/local/bin) for saving: Permission denied
46643:M 14 Sep 2022 22:33:41.134 # Background saving error
...1
2
3
4
5
6
2
3
4
5
6

2.1.5. requirepass +^rs2pc~cATvT#eE#Vt6vN#^
设置密码。
Note:当 master 节点设置了
requirepass之后,slaver 节点也要记得设置masterauth(密码与 master 的requirepass一致),否则无法进行主从同步。
2.1.6. maxmemory 820mb
定义 Redis 可用最大物理内存。
2.2. 集群
参考配置:
- 6379: redis.conf
- 6380: redis.conf
- 6381: redis.conf
- 6382: redis.conf
- 6383: redis.conf
- 6384: redis.conf
以 6384 为例:

2.2.1. 新建配置文件
新建 redis-nodes 文件夹,并在该文件夹下面再新建 6379、6380、6381、6382、6383、6384 6 个文件夹,在以上文件夹中分别放一个 redis.conf 配置文件,各配置文件修改的内容参考如上。
2.2.2. 新建 data 文件夹
新建 data 文件夹,并设置文件夹权限。
Bash
$ pwd
/usr/local/bin
$ sudo mkdir data
$ sudo chmod 777 data1
2
3
4
2
3
4
2.2.3. 新建日志文件
新建日志文件
Bash$ sudo touch /var/log/redis_6379.log $ sudo touch /var/log/redis_6380.log $ sudo touch /var/log/redis_6381.log $ sudo touch /var/log/redis_6382.log $ sudo touch /var/log/redis_6383.log $ sudo touch /var/log/redis_6384.log1
2
3
4
5
6修改日志文件权限
Bash$ sudo chmod 777 /var/log/redis_6379.log $ sudo chmod 777 /var/log/redis_6380.log $ sudo chmod 777 /var/log/redis_6381.log $ sudo chmod 777 /var/log/redis_6382.log $ sudo chmod 777 /var/log/redis_6383.log $ sudo chmod 777 /var/log/redis_6384.log1
2
3
4
5
6
2.2.4. 启动各节点
Bash
$ redis-server /etc/redis-nodes/6379/redis.conf
$ redis-server /etc/redis-nodes/6380/redis.conf
$ redis-server /etc/redis-nodes/6381/redis.conf
$ redis-server /etc/redis-nodes/6382/redis.conf
$ redis-server /etc/redis-nodes/6383/redis.conf
$ redis-server /etc/redis-nodes/6384/redis.conf
$ ps -ef | grep redis
doge 16708 1 0 13:25 ? 00:00:00 redis-server 127.0.0.1:6379 [cluster]
doge 16718 1 0 13:25 ? 00:00:00 redis-server 127.0.0.1:6380 [cluster]
doge 16727 1 0 13:25 ? 00:00:00 redis-server 127.0.0.1:6381 [cluster]
doge 16734 1 0 13:25 ? 00:00:00 redis-server 127.0.0.1:6382 [cluster]
doge 16742 1 0 13:25 ? 00:00:00 redis-server 127.0.0.1:6383 [cluster]
doge 16750 1 0 13:25 ? 00:00:00 redis-server 127.0.0.1:6384 [cluster]
doge 16772 10310 0 13:25 pts/0 00:00:00 grep --color=auto redis
$1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2.2.5. 节点握手
Bash
$ redis-cli -p 6379
127.0.0.1:6379> auth +^rs2pc~cATvT#eE#Vt6vN#^
OK
127.0.0.1:6379> cluster meet 127.0.0.1 6380
OK
127.0.0.1:6379> cluster meet 127.0.0.1 6381
OK
127.0.0.1:6379> cluster meet 127.0.0.1 6382
OK
127.0.0.1:6379> cluster meet 127.0.0.1 6383
OK
127.0.0.1:6379> cluster meet 127.0.0.1 6384
OK
127.0.0.1:6379> cluster nodes
79c319415bfa48252bafcbd96e41bd52309a14bb 127.0.0.1:6380@16380 master - 0 1667366992447 5 connected
58202b7762f27ebaaa98dd0c8a59dacb6eed5922 127.0.0.1:6382@16382 master - 0 1667366993452 3 connected
19dcdcd6ea0a1b6b266a724e80581d6f2abd033a 127.0.0.1:6383@16383 master - 0 1667366995462 4 connected
243ab5d80e3ddacd5575ab62bb54fdb17aae5248 127.0.0.1:6379@16379 myself,master - 0 1667366993000 1 connected
3c8d5450593a491ec535fc5dd1025545912c9911 127.0.0.1:6381@16381 master - 0 1667366991441 2 connected
ea82ad81668da90fb9cd98375ee4bc870d5b2236 127.0.0.1:6384@16384 master - 0 1667366995000 0 connected
127.0.0.1:6379>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2.2.6. 槽指派
Bash
$ redis-cli -a +^rs2pc~cATvT#eE#Vt6vN#^ -p 6379 cluster addslots {0..5000}
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK
$ redis-cli -a +^rs2pc~cATvT#eE#Vt6vN#^ -p 6380 cluster addslots {5001..10000}
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK
$ redis-cli -a +^rs2pc~cATvT#eE#Vt6vN#^ -p 6381 cluster addslots {10001..16383}
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK
$1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
2.2.7. 主从复制
Bash
$ redis-cli -p 6382 -a +^rs2pc~cATvT#eE#Vt6vN#^ cluster replicate 243ab5d80e3ddacd5575ab62bb54fdb17aae5248
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK
$ redis-cli -p 6383 -a +^rs2pc~cATvT#eE#Vt6vN#^ cluster replicate 79c319415bfa48252bafcbd96e41bd52309a14bb
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK
$ redis-cli -p 6384 -a +^rs2pc~cATvT#eE#Vt6vN#^ cluster replicate 3c8d5450593a491ec535fc5dd1025545912c9911
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK
$ redis-cli -p 6379 -a +^rs2pc~cATvT#eE#Vt6vN#^
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> cluster nodes
79c319415bfa48252bafcbd96e41bd52309a14bb 127.0.0.1:6380@16380 master - 0 1667368584862 5 connected 5001-10000
58202b7762f27ebaaa98dd0c8a59dacb6eed5922 127.0.0.1:6382@16382 slave 243ab5d80e3ddacd5575ab62bb54fdb17aae5248 0 1667368581847 1 connected
19dcdcd6ea0a1b6b266a724e80581d6f2abd033a 127.0.0.1:6383@16383 slave 79c319415bfa48252bafcbd96e41bd52309a14bb 0 1667368584000 5 connected
243ab5d80e3ddacd5575ab62bb54fdb17aae5248 127.0.0.1:6379@16379 myself,master - 0 1667368583000 1 connected 0-5000
3c8d5450593a491ec535fc5dd1025545912c9911 127.0.0.1:6381@16381 master - 0 1667368583857 2 connected 10001-16383
ea82ad81668da90fb9cd98375ee4bc870d5b2236 127.0.0.1:6384@16384 slave 3c8d5450593a491ec535fc5dd1025545912c9911 0 1667368585867 2 connected
127.0.0.1:6379>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2.2.8. 测试主从切换
Bash
$ ps -ef | grep redis
doge 16708 1 0 13:25 ? 00:00:01 redis-server 127.0.0.1:6379 [cluster]
doge 16718 1 0 13:25 ? 00:00:01 redis-server 127.0.0.1:6380 [cluster]
doge 16727 1 0 13:25 ? 00:00:01 redis-server 127.0.0.1:6381 [cluster]
doge 16734 1 0 13:25 ? 00:00:01 redis-server 127.0.0.1:6382 [cluster]
doge 16742 1 0 13:25 ? 00:00:01 redis-server 127.0.0.1:6383 [cluster]
doge 16750 1 0 13:25 ? 00:00:01 redis-server 127.0.0.1:6384 [cluster]
doge 18715 10310 0 13:58 pts/0 00:00:00 grep --color=auto redis
$ kill 16708
$ redis-cli -a +^rs2pc~cATvT#eE#Vt6vN#^ --cluster check 127.0.0.1:6380
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Could not connect to Redis at 127.0.0.1:6379: Connection refused
127.0.0.1:6380 (79c31941...) -> 0 keys | 5000 slots | 1 slaves.
127.0.0.1:6381 (3c8d5450...) -> 0 keys | 6383 slots | 1 slaves.
127.0.0.1:6382 (58202b77...) -> 0 keys | 5001 slots | 0 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 127.0.0.1:6380)
M: 79c319415bfa48252bafcbd96e41bd52309a14bb 127.0.0.1:6380
slots:[5001-10000] (5000 slots) master
1 additional replica(s)
M: 3c8d5450593a491ec535fc5dd1025545912c9911 127.0.0.1:6381
slots:[10001-16383] (6383 slots) master
1 additional replica(s)
S: 19dcdcd6ea0a1b6b266a724e80581d6f2abd033a 127.0.0.1:6383
slots: (0 slots) slave
replicates 79c319415bfa48252bafcbd96e41bd52309a14bb
S: ea82ad81668da90fb9cd98375ee4bc870d5b2236 127.0.0.1:6384
slots: (0 slots) slave
replicates 3c8d5450593a491ec535fc5dd1025545912c9911
M: 58202b7762f27ebaaa98dd0c8a59dacb6eed5922 127.0.0.1:6382
slots:[0-5000] (5001 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
$1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37