Redis 非关系型数据库
yum 安装 reids 任意版本
# yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm // 安装 remi redis 源
# yum --enablerepo=remi list redis --showduplicates | sort -r // 查看 redis 版本
# yum --enablerepo=remi install redis-6.0.6 // 安装 指定版本
# systemctl enable redis.service
# systemctl restart redis
redis 6.08 单机部署
# yum install gcc-c++ ruby rubygems
# yum install centos-release-scl
# yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils // 需要升级gcc工具
# scl enable devtoolset-9 bash
# echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
# gcc -v
# wget http://download.redis.io/releases/redis-6.0.8.tar.gz
# tar zxvf redis-6.0.8.tar.gz -C /usr/local/
# cd /usr/local
# mv redis-6.0.8/ redis
# cd /usr/local/redis
# make
# make install PREFIX=/usr/local/redis
# mkdir /usr/local/redis/{etc,data,run,logs}
# mv redis.conf etc
# vim /usr/local/redis/etc/redis.conf
bind 192.168.10.13 127.0.0.1
daemonize yes // 可以设置redis 后台启动
requirepass 123456 // redis 密码
port 6379
protected-mode yes // 安全模式 只监听bind指定的ip no为关闭状态 如果bing没绑定ip为监听所有ip
dir /usr/local/redis/data // 指定 数据库 目录
pidfile /usr/local/redis/run/redis_6379.pid // 指定 pid 文件位置
logfile '/usr/local/redis/logs/redis_6379.log' // 指定 日志目录
appendonly yes // 打开 aof日志 AOF数据库存储 存储路径在上面配置的 dir目录下
appendfsync everysec // 1秒存储一次 会丢失1秒的数据 appendonly.aof
# vim /etc/rc.d/rc.local
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf // 添加开机启动
# chmod +x /etc/rc.d/rc.local // 需要给执行权限 默认是没有的 /etc/rc.local只是软链接
# ln -sv /usr/local/redis/bin/redis-server /usr/local/bin/ // /usr/local/bin/ 目录是 $PATH中的 系统会默认去找寻此目录
# ln -sv /usr/local/redis/bin/redis-cli /usr/local/bin/
# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf // 启动redis
# ss -tnl // 6379端口被监听
# redis-cli
auth 123456 // 认证
KEYS *
exit
# pkill redis // 关闭reids
Reids 简单测试使用
# redis-cli -h 192.168.10.13 -p 6379 -a 123456 // 远程连接redis
# redis-cli // 本地连接redis
auth 123456 // 认证
exit // 退出
keys * // 查看所有的key 就是所有的数据
set aa 123 // 设置键值
get aa // 查看某一个key的值
flushdb // 清空当前数据库的所有key
flushall // 清空所有数据库的所有key 删除所有数据库
select 2 // 使用数据库2 默认使用0
dbsize // 当前redis数据库的数据量
keys sys_config:bw* // 查找前缀为 sys_config:bw 的键值 进入redis 查询
del key // 删除 单个 key del + key的名字
info replication // 查看集群 状态
config get requirepass // 查看当前密码
1) "requirepass"
2) "" // 此为密码为空
config set requirepass 123456 // 临时 设置密码
# redis-cli KEYS "sys_config:bw*" // 查找前缀为 sys_config:bw 的键值 不进入redis 查询
# redis-cli KEYS "sys_config:bw*" | xargs redis-cli DEL // 删除多个key 查找前缀为 sys_config:bw 的键值 后 删除
# redis-cli keys "*" > /data/redis_key.txt // 导出 所有键
# pkill redis // 关闭reids
注:
redis 连接工具Another-Redis-Desktop-Manager.1.4.2.exe 一般ip填写 127.0.0.1 使用ssh连接服务器 填写服务器ip
下载地址 https://github.com/qishibo/AnotherRedisDesktopManager/releases
关于redis 数据库存储
RDB持久化配置
默认开启... Redis会将数据集的快照dump到dump. 会触发 save 中的规则进行数据存储 配置文件详解中会有关于此规则
AOF持久化配置
默认关闭... 在Redis的配置文件中存在三种同步方式,它们分别是:
appendonly yes // 打开 AOF持久化
appendfsync always // 每次有数据修改发生时都会写入AOF文件。
appendfsync everysec // 每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no // 从不同步。高效但是数据不会被持久化。
最好两个都开启 如果同时使用RDB和AOF两种持久化机制 那么在redis重启的时候 会使用AOF来重新构建数据 因为AOF中的数据更加完整。
关于 redis 数据 备份 // reids 为非关系行数据库 一般数据库不用备份
# vim /usr/local/redis/data/rdb_bak.sh // 备份脚本 如有需求 可选择使用
#!/bin/bash
# 备份redis rdb数据 每小时备份一次 保留7天的备份
# crontab -e --> 1 */1 * * * sh /usr/local/redis/data/rdb_bak.sh
n_date=`date +%Y%m%d`
cur_date=`date +%Y%m%d%k%M`
mkdir -p /usr/local/redis/data/rdb_bak/$n_date
cp /usr/local/redis/data/dump.rdb /usr/local/redis/data/rdb_bak/$n_date/dump_$cur_date.rdb
find /usr/local/redis/data/rdb_bak/ -name '*.rdb' -mtime +7 -exec rm -f {} \;
注:
redis 连接工具Another-Redis-Desktop-Manager.1.4.2.exe
下载地址 https://github.com/qishibo/AnotherRedisDesktopManager/releases
Redis集群
Redis有三种集群模式,分别是:
1. 主从 模式
主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(slave)
主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库
从数据库一般都是只读的,并且接收主数据库同步过来的数据
一个master可以拥有多个slave,但是一个slave只能对应一个master
slave挂了不影响其他slave的读和master的读和写,重新启动后会将数据从master同步过来
master挂了以后,不影响slave的读,但redis不再提供写服务,master重启后redis将重新对外提供写服务
master挂了以后,不会在slave节点中重新选一个master
2. Sentinel 哨兵 模式
主从模式的弊端就是不具备高可用性,当master挂掉以后,Redis将不能再对外提供写入操作,因此sentinel应运而生。
sentinel模式是建立在主从模式的基础上,如果只有一个Redis节点,sentinel就没有任何意义
当master挂了以后,sentinel会在slave中选择一个做为master,并修改它们的配置文件,
其他slave的配置文件也会被修改,比如slaveof属性会指向新的master
当master重新启动后,它将不再是master而是做为slave接收新的master的同步数据
sentinel因为也是一个进程有挂掉的可能,所以sentinel也会启动多个形成一个sentinel集群
多sentinel配置的时候,sentinel之间也会自动监控
当主从模式配置密码时,sentinel也会同步将配置信息修改到配置文件中,不需要担心
一个sentinel或sentinel集群可以管理多个主从Redis,多个sentinel也可以监控同一个redis
sentinel最好不要和Redis部署在同一台机器,不然Redis的服务器挂了以后,sentinel也挂
每个sentinel以每秒钟一次的频率向它所知的master,slave以及其他sentinel实例发送一个 PING 命令
如一个实例距离最后一次有效回复 PING时间超过 down-after-milliseconds 选项所指定的值则会被sentinel标记为主观下线
如果一个master被标记为主观下线,则正在监视这个master的所有sentinel要以每秒一次的频率确认master的确进入了主观下线状态
当有足够数量的sentinel在指定的时间范围内确认master的确进入了主观下线状态 则master会被标记为客观下线
在一般情况下, 每个sentinel会以每 10 秒一次的频率向它已知的所有master,slave发送 INFO 命令
当master被sentinel标记为客观下线时,sentinel向下线的master的所有slave发送 INFO 命令的频率会从 10秒一次改为1秒一次
若没有足够数量的sentinel同意master已经下线,master的客观下线状态就会被移除;
若master重新向sentinel的 PING 命令返回有效回复,master的主观下线状态就会被移除
当使用sentinel模式的时候,客户端就不要直接连接Redis,而是连接sentinel的ip和port,
由sentinel来提供具体的可提供服务的Redis实现,这样当master节点挂掉以后sentinel就会感知并将新的master节点提供给使用者
3. Cluster 模式
cluster可以说是sentinel和主从模式的结合体,通过cluster可以实现主从和master重选功能,所以如果配置两个副本三个分片的话
就需要六个Redis实例。因为Redis的数据是根据一定规则分配到cluster的不同机器的,当数据量过大时,可以新增机器进行扩容
多个redis节点网络互联,数据共享
所有的节点都是一主一从(也可以是一主多从),其中从不提供服务,仅作为备用
不支持同时处理多个key(如MSET/MGET),因为redis需要把key均匀分布在各个节点上,
并发量很高的情况下同时创建key-value会降低性能并导致不可预测的行为
支持在线增加、删除节点
客户端可以连接任何一个主节点进行读写
主从模式 配置
# yum install gcc-c++ ruby rubygems
# yum -y install centos-release-scl
# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
# scl enable devtoolset-9 bash
# echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
# gcc -v
# wget http://download.redis.io/releases/redis-6.0.8.tar.gz
# tar zxvf redis-6.0.8.tar.gz -C /usr/local/
# cd /usr/local
# mv redis-6.0.8/ redis
# cd /usr/local/redis
# make
# make install PREFIX=/usr/local/redis
# mkdir -p /usr/local/redis/{etc/{7001,7002,7003},logs,data,run}
# ln -sv /usr/local/redis/bin/redis-server /usr/local/bin/
# ln -sv /usr/local/redis/bin/redis-cli /usr/local/bin/
# echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf
# sysctl -p
# cp redis.conf etc/7001/redis.conf
# cd /usr/local/redis/etc/7001/
# redis.conf // 主节点
bind 192.168.10.13 127.0.0.1
daemonize yes // 可以设置redis 后台启动
requirepass 123456 // redis 密码
port 7001 // 此为测试环境都在一台机器上配置 在生产环境需要每个一台 端口都使用6379就可以
protected-mode yes // 安全模式 只监听bind指定的ip no为关闭状态 如果bing没绑定ip为监听所有ip
dir /usr/local/redis/data // 指定 数据库 目录
pidfile /usr/local/redis/run/redis_7001.pid // 指定 pid 文件位置
logfile '/usr/local/redis/logs/redis_7001.log' // 指定 日志目录
appendfilename "appendonly_7001.aof" // 保存AOF数据 的名字
dbfilename dump_7001.rdb // 保存RDB数据库 的名字
appendonly yes // 打开 aof日志 AOF数据库存储 存储路径在上面配置的 dir目录下
appendfsync everysec // 1秒存储一次 会丢失1秒的数据 appendonly.aof
# cp redis.conf ../7002/
# cp redis.conf ../7003/
# vim /usr/local/redis/etc/7002/redis.conf // 从节点1
bind 192.168.10.13 127.0.0.1
daemonize yes
requirepass 123456
port 7002
protected-mode yes
dir /usr/local/redis/data
pidfile /usr/local/redis/run/redis_7002.pid
logfile '/usr/local/redis/logs/redis_7002.log'
appendfilename "appendonly_7002.aof"
dbfilename dump_7002.rdb
appendonly yes
appendfsync everysec
slaveof 127.0.0.1 7001 // 此节点为从节点 后跟主几点ip 端口 老版本为 replicaof 127.0.0.1 7001
masterauth 123456 // 从节点 连接master密码,master可省略
# vim /usr/local/redis/etc/7003/reids.conf // 从节点2 还有其他从节点 依次加即可
bind 192.168.10.13 127.0.0.1
daemonize yes
requirepass 123456
port 7003
protected-mode yes
dir /usr/local/redis/data
pidfile /usr/local/redis/run/redis_7003.pid
logfile '/usr/local/redis/logs/redis_7003.log'
appendfilename "appendonly_7002.aof"
dbfilename dump_7002.rdb
appendonly yes
appendfsync everysec
replicaof 127.0.0.1 7001
masterauth 123456
# vim /etc/rc.d/rc.local
redis-server /usr/local/redis/etc/7001/redis.conf
redis-server /usr/local/redis/etc/7002/redis.conf
redis-server /usr/local/redis/etc/7003/redis.conf
# chmod +x /etc/rc.d/rc.local // 需要给执行权限 默认是没有的 /etc/rc.local只是软链接
# redis-server /usr/local/redis/etc/7001/redis.conf
# redis-server /usr/local/redis/etc/7002/redis.conf
# redis-server /usr/local/redis/etc/7003/redis.conf
# redis-cli -h 127.0.0.1 -p 7002 -a 123456 info replication // 在命令行上 直接查看集群状态
# redis-cli -h 172.21.34.204 -p 7001
auth 123456
info replication // 查看集群 状态
keys * // 创建键值 以验证
set key1 100
set key2 200
keys *
# redis-cli -h 127.0.0.1 -p 7002 // 进入从节点 查看
keys *
get key1
set key3 300 // 会提示 从节点 无法写入数据 从节点只能读取
Sentinel 哨兵 模式 配置 // 需 基于 主从模式 接上面的配置 接着配置即可 哨兵就是监控主节点是否挂掉 挂掉后再选个主节点
# ln -sv /usr/local/redis/bin/redis-sentinel /usr/local/bin/
# mkdir -p /usr/local/redis/sentinel
# mkdir -p /usr/local/redis/etc/sentinel/{27001,27002,27003}
# vim /usr/local/redis/etc/sentinel/27001/sentinel.conf
bind 127.0.0.1 172.21.34.204
port 27001 // 此为测试环境都在一台机器上配置 在生产环境需要每个一台 端口都使用26379就可以
daemonize yes
logfile "/usr/local/redis/logs/sentine_27001.log"
pidfile /usr/local/redis/run/sentine_27001.pid
dir /usr/local/redis/sentinel // 哨兵的工作目录 建议设置为n/2+1,n为sentinel个数
sentinel monitor mymaster 127.0.0.1 7001 2 // ip 端口为主节点的 判断master失效至少需要2个sentinel同意
sentinel auth-pass mymaster 123456 \\ 主节点的密码 要在上一条的下面否则启动会报错No such master with specified name.
sentinel down-after-milliseconds mymaster 30000 // 此为30秒 判断master主观下线时间 默认30秒
# vim /usr/local/redis/etc/sentinel/27002/sentinel.conf
bind 127.0.0.1 172.21.34.204
port 27002
daemonize yes
logfile "/usr/local/redis/logs/sentine_27002.log"
pidfile /usr/local/redis/run/sentine_27002.pid
dir /usr/local/redis/sentinel
sentinel monitor mymaster 127.0.0.1 7001 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000
# vim /usr/local/redis/etc/sentinel/27003/sentinel.conf
bind 127.0.0.1 172.21.34.204
port 27003
daemonize yes
logfile "/usr/local/redis/logs/sentine_27003.log"
pidfile /usr/local/redis/run/sentine_27003.pid
dir /usr/local/redis/sentinel
sentinel monitor mymaster 127.0.0.1 7001 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000
# redis-sentinel /usr/local/redis/etc/sentinel/27001/sentinel.conf // 启动哨兵
# redis-sentinel /usr/local/redis/etc/sentinel/27002/sentinel.conf
# redis-sentinel /usr/local/redis/etc/sentinel/27003/sentinel.conf
# ss -tnl // 27001被监听
# tail -f /usr/local/redis/logs/sentine_27001.log // 哨兵日志文件
# ss -tnlp // 测试 主节点 挂掉后
# kill 32087 // 杀掉 主节点 可看哨兵日志sentine_27001.log 有相关
# redis-cli -h 127.0.0.1 -p 7003
auth 123456
info replication // 可看到 主节点已经更换
注:
sentinel 哨兵 日志 详解
+reset-master :主服务器已被重置。
+slave :一个新的从服务器已经被 Sentinel 识别并关联。
+failover-state-reconf-slaves :故障转移状态切换到了 reconf-slaves 状态。
+failover-detected :另一个 Sentinel 开始了一次故障转移操作,或者一个从服务器转换成了主服务器。
+slave-reconf-sent :领头(leader)的 Sentinel 向实例发送了命令,为实例设置新的主服务器。
+slave-reconf-inprog :实例正在将自己设置为指定主服务器的从服务器,但相应的同步过程仍未完成。
+slave-reconf-done :从服务器已经成功完成对新主服务器的同步。
-dup-sentinel :对给定主服务器进行监视的一个或多个 Sentinel 已经因为重复出现而被移除 —— 当 S重启的时候,就会出现这种情况
+sentinel :一个监视给定主服务器的新 Sentinel 已经被识别并添加。
+sdown :给定的实例现在处于主观下线状态。
-sdown :给定的实例已经不再处于主观下线状态。
+odown :给定的实例现在处于客观下线状态。
-odown :给定的实例已经不再处于客观下线状态。
+new-epoch :当前的纪元(epoch)已经被更新。
+try-failover :一个新的故障迁移操作正在执行中,等待被大多数 Sentinel 选中(waiting to be elected by the majority)。
+elected-leader :赢得指定纪元的选举,可以进行故障迁移操作了。
+failover-state-select-slave :故障转移操作现在处于 select-slave 状态 —— Sentinel 正在寻找可以升级为主服务器的从服务器
no-good-slave :Sentinel 操作未能找到适合进行升级的从服务器。会在一段时间之后再次尝试寻找合适的从服务器来进行升级
selected-slave :Sentinel 顺利找到适合进行升级的从服务器。
failover-state-send-slaveof-noone :Sentinel 正在将指定的从服务器升级为主服务器,等待升级功能完成。
failover-end-for-timeout :故障转移因为超时而中止,不过最终所有从服务器都会开始复制新的主服务器
failover-end :故障转移操作顺利完成。所有从服务器都开始复制新的主服务器了。
+switch-master :配置变更,主服务器的 IP 和地址已经改变。 这是绝大多数外部用户都关心的信息。
+tilt :进入 tilt 模式。
-tilt :退出 tilt 模式。
Cluster 分片集群 搭建
# yum install gcc-c++ ruby rubygems
# yum -y install centos-release-scl
# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
# scl enable devtoolset-9 bash
# echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
# gcc -v
# wget http://download.redis.io/releases/redis-6.0.8.tar.gz
# tar zxvf redis-6.0.8.tar.gz -C /usr/local/
# cd /usr/local
# mv redis-6.0.8/ redis
# cd /usr/local/redis
# make
# make install PREFIX=/usr/local/redis
# mkdir -p /usr/local/redis/{etc/{7001,7002,7003,7004,7005,7006},logs,data,run}
# ln -sv /usr/local/redis/bin/redis-server /usr/local/bin/
# ln -sv /usr/local/redis/bin/redis-cli /usr/local/bin/
# echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf
# sysctl -p
# cp redis.conf etc/7001/redis.conf
# cd /usr/local/redis/etc/7001/
# vim redis.conf // 六台机器的配置文件基本一样 本次在一台上跑六个实例
bind 192.168.10.13 127.0.0.1
daemonize yes
requirepass 123456
masterauth 123456
port 7001
protected-mode yes
dir /usr/local/redis/data
pidfile /usr/local/redis/run/redis_7001.pid
logfile '/usr/local/redis/logs/redis_7001.log'
appendfilename "appendonly_7001.aof"
dbfilename dump_7001.rdb
appendonly yes
appendfsync everysec
cluster-enabled yes // 开启 分片集群 cluste 模式
cluster-config-file nodes_7001.conf // cluster 配置文件
cluster-node-timeout 15000 // 超时 时间
# cd /usr/local/redis/etc
# find ./ -maxdepth 1 -type d -exec cp -r ./7001/redis.conf {} \; && rm -f redis.conf // 复制配置文件到其他文件夹
# for ((i=7001; i<=7006; i++)); do sed -i "s/7001/$i/g" ./$i/redis.conf; done // 统一修改配置文件
# redis-server /usr/local/redis/etc/7001/redis.conf
# redis-server /usr/local/redis/etc/7002/redis.conf
# redis-server /usr/local/redis/etc/7003/redis.conf
# redis-server /usr/local/redis/etc/7004/redis.conf
# redis-server /usr/local/redis/etc/7005/redis.conf
# redis-server /usr/local/redis/etc/7006/redis.conf
# redis-cli -a 123456 --cluster create 172.21.34.204:7001 172.21.34.204:7002 172.21.34.204:7003 172.21.34.204:7004 172.21.34.204:7005 172.21.34.204:7006 --cluster-replicas 1
# ss -tnl // 集群启动命令 如报错 [ERR] Node *** is not empty... 删除 所有数据文件 redis/data/* 在重新启动
# chmod +x /etc/rc.d/rc.local // 需要给执行权限 默认是没有的 /etc/rc.local只是软链接
# redis-cli -c -h 172.21.34.204 -p 7001 -a 123456 // -c,使用集群方式登录 如不用使用 -a 总提示要验证
auth 123456
cluster info // 查看集群 信息
cluster nodes // 列出 节点信息 这里 与 data/nodes.conf 文件内容相同
set key111 aaa // 会分别 存储 不同的服务器
set key222 bbb // 其中 slave节点根本不提供服务 只是作为对应master节点的一个备份。
set key333 ccc
get key222 // 会提示记录在哪一个 服务器上 -> Redirected to slot [7472] located at 127.0.0.1:7002 "ccc"
注:
关于 新增节点 未总结 待续
# redis-server /usr/local/redis/etc/7007/redis.conf // 新加节点7007 需准备配置文件即可 步骤同上 已经省略
# redis-cli -c -h 172.21.34.204 -p 7001 -a 123456
cluster meet 127.0.0.1 7007 // 新加入节点
cluster nodes // 会看到 新节点都是 以 master 加入的
cluster replicate 2f73efdb6dcaa5313c1e528ca296b9fcce519b0d // 更改节点身份
关于 老版本 redis 需要使用 redis-trib.rb 命令
# ln -sv /usr/local/redis/src/redis-trib.rb /usr/local/bin/
# redis-trib.rb create --replicas 1 172.21.34.204:7001 172.21.34.204:7002 172.21.34.204:7003 172.21.34.204:7004 172.21.34.204:7005 172.21.34.204:7006
........................................................................................................................
配置文件详解
bind 0.0.0.0 // 地址监听 可以用空格隔开后多个监听ip
protected-mode yes // 安全模式 在没有设置bind ip时候 只允许127.0.0.1:6379访问
tcp-backlog 511 // 三次握手的时候server端收到client ack确认号之后的队列值
timeout 0 // 客户端(程序) 连接redis 的超时时间
tcp-keepalive 300 // tcp会话保持时间 减少三次握手消耗的时间
daemonize no // 是否开启 pid 以守护进程方式进行 yes开启
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 // 数据库数目16 默认从0-15
always-show-log yes
always-show-logo yes // 是否在日志中 记录redis图标
save "" // 开启此选项 禁用下面三个选项 会禁用持久化功能 reids只用于缓存
save 900 1 // 快照 在900秒内有1个变化 就会做快照 把数据 写入到磁盘
save 300 10
save 60 10000
stop-writes-onbgsave-error yes // 快照出错时 是否禁止redis 写入操作
rdbcompression yes // 持久化到RDB文件时 是否压缩 yes为压缩
rdbchecksum yes // 是否开心RC64效验 默认是开启
dbfilename dump_6379.rdb // 快照的文件名称
dir /usr/local/redis/data // 快照的存储路径 redis数据的存储路径
slaveof 192.168.10.10 6379 // 此节点为 从节点 主机为10.10端口6379
masterauth 123456 // 主节点的密码 为123456
replica-serve-stale-data yes // 当从库与主库失去连接或复制数据时候 yes从库会继续响应客户读请求 默认yes
// no除去指定的命令之外的任何请求都会返回错误 'SYNC with master in progress'
replica-read-only yes // 从库 设为 只读
repl-diskless-sync no // 第一次slave连接时需要做全量数据同步 no为通过文件传输磁盘快使用 yes通过内存传输网络快磁盘慢使用
repl-diskless-sync-delay 5 // 上面选项为no时 延迟时间 一旦有另一个新的slave连接 会一起发送文件
repl-ping-replica-period 10 // 监测slave存活的时间 主节点 对 slave 的ping监测时间
repl-timeout 60 // 复制连接的超时时间 需要大于 repl-ping-slave-period的时间 否则会报超时
repl-disable-tcp-nodelay no // 在使用内存传输时 等待小报文的合并 no不延迟直接发不做报文合并
repl-backlog-size 1mb // 复制缓冲区内存大小 只有在slave连接后才分配内存 默认 1MB
repl-backlog-ttl 3600 // 多次实践master没有slave连接 就清空backlog缓冲区内存
replica-priority 100 // 当master不可用 sentinel哨兵会根据slave的优先级选举master 选最低的为master 配置0永远不会被选举
requirepass foobared // 设置redis连接密码
rename-command // 重命名一些 高危命令
rename-command FLUSHALL "linux39" // 把 FULSHALL命令 重命名为 linux39
maxclients 10000 // 最大客户端连接数
maxmemory 3221225472 // redis使用多少内存 最好是分系统内存的一半默认为不限制内存使用 此为字节数 2G*1024*1024*1024
appendonly yes // aof持久化 默认为关闭 aof日志记录 二进制日志文件 文件会放到 上面设置的dir目录
appendfsync everysec // aof配置 everysec 1秒钟写入磁盘一次可能丢1秒的数据 no有操作系统保证数据同步到磁盘
// always表示每次写入都执行不丢数据浪费磁盘io
auto-aof-rewrite-min-size 64mb // 到64m aof会重写一些 添加又删除的命令 已经减少空间
auto-aof-rewrite-percentage 100 // 当aof log 超过指定百分比时候 重写aof文件 0时候不自动重写aof日志
no-appendfsync-on-rewrite no // 在aof 重写期间是否对aof新记录的append暂缓使用文件同步策略 yes为暂缓30秒 no为立即同步
aof-load-truncated yes // 是否加载由于其他原因导致的末尾异常的aof文件 断电等
aof-use-rdb-preamble no // 是否开启 rdb-aof 混合持久化格式
lua-time-limit 5000 // lua脚本的最大执行时间 单位毫秒
cluster-enabled yes // 是否开启集群模式 模式是单机模式
cluster-node-file nodes_6379.conf // 由node节点自动生成的及集群配置文件 指定名称即可
cluster-node-timeout 15000 // 集群中node节点连接超时时间 单位毫秒
cluster-replica-validity-factor 10 // 超过多少秒未和主节点同步 从节点就不会被选举成主节点 单位秒
cluster-migration-barrier 1 // 一个主节点至少有用 多少个 正常的从节点 如果从节点故障后
// 会从多余的从节点分配到当前的主机诶单成为新的从节点
cluster-require-full-coverage no // 如果16384个槽位不全 是否停止工作 no为继续工作 yes不工作
slow log-slower-than 10000 // 慢日志 超过多长时间认为是慢日志 单位微妙
slowlog-max-len 128 // 慢日志 记录条数