开发者学堂课程【Redis 入门实战演练: 配置文件详解、RDB 及 AOF 备份机制(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/653/detail/10834
配置文件详解、RDB 及 AOF 备份机制(二)
4.repl-diskless-sync-delay 30
#diskless*
*复制的延迟时间**,设置0为关闭,在延迟时间内连接的新客户端,会一起通过 disk 方式同步数据,但是一旦复制开始还没有结束之前,master 节点不会再接收新 slave 的复制请求,直到下一次同步开始。
文件 dump 之后,会延迟30秒到slave,假如30秒内第三个 slave 出现,30秒后同步数据的时候,再与 master 4G dumo,rdp连接。
5.repl-ping-slave-period 10
#slave 根据 master 指定的时间进行周期性的 PING 监测
6.repl-timeout
60#复制连接的超时时间,需要大于 repl-ping-slave-period
,否则会经常报超时
7.repl-disable-tcp-nodelay no
#在socket 模式下是否在 slave 套接字发送 SYNC 之后禁用 TCP_NODELAY,如果选择"yesRedis将使用更少的 TCP****包和带宽来向slaves***
发送数据,但是这将使数据传输到**slave****上有延迟,因为会做合并,把第一个报文和第二个报文进行合并,合成为一整个报文。Linux****内核的默认配置会达到4O***毫秒,如果你选择了"no"**数据传输到 salve**的延迟将会减少但要使用更多的带宽。
8.Repl-ping-slave-period 10
让 slave 每间隔10s 让 master 同步一次,向 slave 进行检测,让 slave 去 ping master,让任务交给 master。
9.repl-backlog-size 512mb
#复制缓冲区内存大小,只有在 slave 连接之后才分配内存。数值不要设置的太大,在 master 和 slave 同步数据的时候写数据放到
10.repl-backlog-size
master 和 slave 同步数据的时候,不能禁止程序写入,写完数据之后,master 放入缓冲区,同步给 slave。4个G是 redis 用的,剩下的512mb 是给缓冲区使用的。要给系统留足够的缓存空间。
11.repl-backlog-ttl 3600
#多次时间 master 没有 slave 连接,就清空 backlog 缓冲区。当 redis 的4G内存不够时,如果需要8G 内存的话,这时候找一个物理主机有16G 的主机,redis8 个G,剩下的4个 G 给系统区用,即内核。内核处理某些任务的时候发现系统没有内存了,就把当前系统上占用最大内存的进程撤掉(redis),但是业务会受到影响。
replica-priority 100
#当 master 不可用,Sentinel 会根据 slave 的优先级选举一个 master,最低的优先级的 slave,当选 master,而配置成0,永远不会被选举。如果想设置成自动选举的话,就写成一样的100,会产生一种内部的选举策略,会选举一个机器,从而推选出 master。
12.requirepass foobared
#设置 redis 连接密码 rename-command #重命名一些高危命令。可以设置成rename - c ommand CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
,但是这个命令有一定的危险性,这个命令就算别人拿到 redis 的服务密码,可以把这个命令进行重新命名。
[ rootredis-serverl ~]#
[ root@redis-serverl ~]#
[ rootaredis-serverl ~]# redis-cli
127. 0.0.1:6379> SET key1 valuel
OK
127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> FLUSHALL
OK
1270.0.1:6379>
127.0.0.1:6379> exit
[root@redis-serverl ~]# redis-cli
127.0.0.1:6379> FLUSHALL
(error) ERR unknown
ommand、 FLUSHALL,with args beginning with:
127.0.0.1:6379>linux39
Ok
FLUSMALL 就是对某些命令重命名。
13.maxclients 10000
#Redis最大连接客户端
14.maxmemory
#最大内存,单位为 bytes 字节,8G 内存的计算方式8(G)1024(MB)1024(KB)*1024(Kbyte),需要注意的是 slave 的输出缓冲区是不计算在 maxmemory 内。
[ root@172~]# bcbc 1.06.95
Copyright 1991-1994,1997,1998,2000,2004,2006 Free Software Foundation,Inc .This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty ' .
计算字节数:
2*1024
2048
2*1024*1024
2097152
2*1024*1024*1024
2147483648
3*1024*1024*1024
3221225472
Maxmemory 2147483648
设置好之后进行关机,关机后把内存设置的大一点,
edis-server1 redis-4.0.14]#poweroff
Connection closed by foreign host.
Disconnected from remote host(172.31.7.101-server1) at 16:42:19.
Type `help' to learn how to use Xshell prompt.
Connecting to 172.31.7.101:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+] ' .
W
ARNING!The remote sSH server rejected x11 forwarding request.
Last login: Fri Feb7 19:45:072020 from 172.31.0.1
15.appendonly no
#是否开启 AOF 日志记录,默认 redis 使用的是 rdb 方式持久化,这种方式在许多应用中已经足够用了,但是redis如果中途宕机,会导致可能有几分钟的数据丢失(取决于dumpd数据的间隔时间),根据 save 来策略进行持久化,Append Only File 是另一种持久化方式,可以提供更好的持久化特性,Redis 会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时 Redis 都会先把这个文件的数据读入内存里,先忽略 RDB 文件。
[ root@redis-server1 ~]# ll / apps/ redis/bin/data/ etc/logs/ run/
[ root@redis-server1 ~]# ll / apps/redis/data/total 48
-rw-r--r-- 1 redis redis 32804 Feb8 00:48 appendonly_6379.aof- rw-r--r-- 1 redis redis 10879 Feb 8 00:48 dump_6379.rdb
[root@redis-server1 ~]# ll -h /apps/redis/data/ appendonly_6379.aof
-rw-r--r-- 1 redis redis 33K Feb 8 00∶48 /apps/redis/data/appendonly_6379.aof[root@redis-server1 ~]# file/apps/redis/data/appendonly_6379.aof
/apps/redis/data/appendonly_6379.aof:4SCII text,with CRLF line terminators[root@redis-server1 ~]# head /apps/redis/data/appendonly_6379.aof
*2
$6
SELECT
$2
49
*3
$3
SET
$2
k0
appendfilename "appendonly.aof”
#AOF文件名
appendfsync everysec
#aof 持久化策略的配置,no 表示不执行 fsync,由操作系统保证数据同步到磁盘,always 表示每次写入都执行 fsync,以保证数据同步到磁盘,everysec 表示每秒执行一次 fsync,可能会导致丢失这1s数据。