1、redis服务配置文件详解
2、RDB、AOF详解及优缺点总结
3、Redis主从实现
----------------------------------------------------------------------------------------------------

1、redis服务配置文件详解

bind 0.0.0.0            #设置监听地址
protected-mode yes      #redis3.2之后的新特性,未设置bind地址和密码时,拒绝访问redis
port 6379               #设置监听端口
tcp-backlog 511         #TCP三次握手队列值
timeout 0               #客户端和redis服务端连接超时时间,为0永不超时,要设置就长点,如600s
tcp-keepalive 300       #会话保持时间
daemonize yes           #以守护进程运行redis
supervised systemd      #用systemd管理redis
pidfile /usr/local/redis/run/redis_6379.pid            #pid文件路径
loglevel notice            #日志级别
logfile "/usr/local/redis/logs/redis_6379.log"        #日志文件路径
databases 16              #设置redis db库数量,默认16个
always-show-logo no        #启动时不显示logo
save ""                    #不启用默认快照策略,多个save表示或关系
stop-writes-on-bgsave-error no    #RDB快照出错时,不禁止redis写入操作
rdbcompression yes                #RDB快照时压缩
rdbchecksum yes                   #RDB快照时校验
dbfilename dump_6379.rdb          #RDB快照名称,每次快照会覆盖旧文件
dir /usr/local/redis/data         #RDB快照和AOF文件存放路径
slaveof <masterip> <masterport>   #主从复制时,master的IP和端口
masterauth <master-password>      #主从复制时,master的密码
slave-serve-stale-data yes        #slave与master失去连接或复制正在进行时,为yes时,继续响应客户端的读请求。
                                                                     为no报错,SYNC with master in progress。
slave-read-only yes               #slave设置为只读
repl-diskless-sync no             #是否使用socket模式复制数据,为yes时,dump RDB不落磁盘,直接到slave的socket。
                                                           为no时,dump RDB落磁盘,落完磁盘再发送给slave。
repl-diskless-sync-delay 0        #repl-diskless-sync为yes时,延迟时间内连接的所有slave,一起同步数据。
                                                            复制开始后没结束前,master不会响应新slave的复制请求,直到下一次同步开始
repl-ping-slave-period 10         #slave根据master设置的间隔时间对master进行ping检测
repl-timeout 60                   #复制连接的超时时长,须大于repl-ping-slave-period,否则经常报错超时
repl-disable-tcp-nodelay no       #在socket模式下,为yes时,使用更少的TCP包和带宽向slave发送数据,内核默认延迟40ms。
                                                 为no时,延迟减少,占用更多带宽。
repl-backlog-size 512mb           #复制缓冲区大小,只在slave连接后才分配,不与maxmemory合并计算。
repl-backlog-ttl 3600             #多长时间slave不连接master,master就清空复制缓冲区
slave-priority 100                #slave优先级,低优先级slave在sentinel选举新master时优先,为0永不选举
requirepass root                  #设置redis连接密码
rename-command FLUSHDB "LqYtt96iKVUP"         #重命名高危命令
rename-command FLUSHALL "+QAmxR9Q/YIL"        #重命名高危命令
maxclients 10000                  #最大客户端连接数
maxmemory 1073741824              #分配给redis的最大内存,单位:Byte
appendonly yes                      #启用AOF日志记录,相当于Mysql的binlog
appendfilename appendonly_6379.aof        #AOF文件名称
appendfsync always                        #fsync策略,AOF落盘配置,为no时,由操作系统决定何时同步到磁盘。
                                                                为everysec时,每秒执行一次AOF落盘。
                                                                为always时,每条AOF记录都落盘。
no-appendfsync-on-rewrite no            #AOF文件重写期间,为no时,立即同步新AOF记录。
                                                        为yes时,暂缓同步新AOF记录。
auto-aof-rewrite-percentage 100        #AOF文件超过指定比例时重写,减小AOF文件体积。
auto-aof-rewrite-min-size 64mb         #AOF文件超过指定大小时重写
aof-load-truncated yes                 #加载由于异常原因导致末尾格式异常的AOF文件
aof-use-rdb-preamble no                #使用RDB与AOF混合持久化格式
lua-time-limit 5000                    #lua脚本最大执行时间
cluster-enabled yes                    #开启集群模式
cluster-config-file /usr/local/redis/etc/nodes-6379.conf        #由node节点自动生成的集群配置文件
cluster-node-timeout 15000              #集群中node节点连接超时时间
cluster-slave-validity-factor 10        #故障转移时,与master断开时间超过指定时间的node节点不能选举为master
cluster-migration-barrier 1             #集群迁移屏障,主节点最少需要的正常工作从节点的个数
cluster-require-full-coverage no        #集群请求槽位全部覆盖,16384个槽位。主节点宕机后槽位不全仍对外提供服务。
slowlog-log-slower-than 10000           #慢查询阈值:10ms
slowlog-max-len 128                     #记录慢查询的条数

2、RDB、AOF详解及优缺点总结

#RDB:Redis Database,基于时间的快照,相当于执行mysqldump
 原理:Redis主进程fork一个子进程,通过写时复制机制,子进程dump内存数据至temp文件,完成后替换上一个RDB文件,关闭子进程。
 优点:恢复速度比AOF快
 缺点:不能实时保存数据
 
#AOF:Append Only File,将操作过程依次写入文件,相当于mysql的binlog
 原理:通过写时复制机制,所有操作根据fsync策略进行写磁盘。
 优点:所有操作都保存至文件,安全性高
 缺点:某些重复操作也会记录,导致AOF文件比RDB文件大

3、Redis主从实现

3.1 原理

#某个slave切换连接到新master后,会清空自身redis内存的所有数据,并将新master的数据导入自己的内存。

#主从复制原理:
 首次,全量同步:
  1)slave发起同求请求连接到master
  2)master接收请求后,fork一个子进程dump内存数据生成RDB文件,之后发生的写命令记录在复制缓冲区中
  3)master dump完成后发送RDB文件给slave,发送完成后,向slave发送复制缓冲区的写命令
  4)slave收到RDB文件后,清空自身redis内存的数据,将RDB文件的数据导入自己的内存,执行master发送的复制缓冲区的写命令
 之后,增量同步:
  1)后期同步,slave发送slave_repl_offset位置,同步增量数据

#注意:
 主从版本保持一致
 从库设置和主一样的密码,开启数据持久化(在主down后VIP切换,手动提升slave为新主)

3.2 配置

#命令行配置
 slaveof 10.0.0.7 6379                    #redis-5版本命令为:replicaof 10.0.0.7 6379
 config set masterauth root
 
#持久化,写入配置文件
 slaveof 10.0.0.7 6379
 masterauth root
 
#查看主从复制状态
 info replication
posted on 2023-03-29 09:31  不期而至  阅读(18)  评论(0编辑  收藏  举报