Redis配置文件:
基本配置 | 说明 |
---|---|
bind | 绑定的地址 |
port | 端口号 |
timeout | 客户端空闲N秒后关闭连接(0表示禁用) |
databases | 16个数据库(默认) |
pidfile | pid文件地址(每个服务唯一) |
replicaof | 主机的IP地址+端口号 |
requirepass | 设置密码 |
masterauth | 主机访问密码(如果主机有密码验证) |
在 Redis 6.0 及以上版本中,引入了基于 ACL(Access Control List)的用户管理功能:
user default on nopass ~* &* +@all
user default
:配置默认用户。on
:启用默认用户。off:关闭默认账户。nopass
:默认用户无需密码即可连接。~*
:默认用户可以访问所有键。&*
:默认用户可以访问所有发布/订阅通道。+@all
:默认用户可以执行所有命令。假如你想限制默认用户只能进行读操作而不能写入操作,可以这样配置:
user default on nopass ~* &* +@read -@write
Redis持久化:
线上环境一般是 RDB+AOF 同时开启
持久化方式 | RDB | AOF |
---|---|---|
默认状态 | 默认开启;把redis.conf中所有的save注释即可关闭 | 默认关闭;在redis.conf中设为 appendonly yes即可开启 |
同步机制 | 满足条件触发同步,即可以指定某个时间内发生多少个命令时进行同步 | 每秒同步或者每次发生命令后同步 |
存储内容 | 存储的是Redis里具体的值 | 存储的是执行更新操作的命令 |
存储文件的路径 | 根据dir以及dbfilenname来指定路径和具体的文件名 | 根据dir以及appendfilename来指定具体的路径和文件名 |
优点 | 存储数据文件时会进行压缩,文件体积比aof小;在恢复的时候速度比aof快;非常适合备份用。 | aof策略的备份机制是每秒或者每发生写操作的时候都会同步,因此即使服务器故障,最多只会丢失1秒的数据;aof存储的是redis命令,并且是直接追加到aof文件后面,因此每次备份的时候只要添加新的数据进去就可以了;如果aof文件比较大了,那么Redis会进行重写,只保留最小的命令集合。 |
缺点 | rdb在满足触发条件才会触发同步机制,rdb在同步的时候都重新保存整个Redis中的数据,在这种情况下,一旦服务器故障,会造成这段时间的数据丢失;在数据保存进rdb的时候,redis会fork出一个子进程用来同步,在数据量比较大的时候,可能非常耗时。 | aof文件因为没有压缩,因此比rdb体积大;aof是在每秒或者每次写操作都进行备份,因此如果并发量比较大,效率可能会有点慢;aof文件因为存储的是命令,因此在灾难恢复的时候Redis会重新运行aof中的命令,因此恢复速度比不上rdb。 |
RDB持久化参数 | 说明 |
---|---|
save 900 1 | 900秒和至少1个键改变才会被保存 |
save 300 10 | 300秒和至少10个键改变才会被保存 |
save 60 10000 | 60秒和至少10000个键改变才会被保存 |
stop-writes-on-bgsave-error yes | 错误发生时停止写入 |
rdbcompression yes | 启用压缩 |
rdbchecksum yes | 检验 |
dbfilename dump.rdb | rdb文件名 |
dir /var/lib/redis | rdb文件保存路径 |
AOF持久化参数 | 说明 |
---|---|
appendonly no | 不启用aof持久化。若启动aof持久化,只需修改为appendonly yes即可 |
auto-aof-rewrite-percentage 100 | 当aof文件的大小增加了指定比例的时候,执行一次重写操作 |
auto-aof-rewrite-min-size 64mb | 设定aof文件重写操作最小值 |
appendfilename “appendonly.aof” | aof持久化信息保存在哪个文件中 |
appendfsync always | 一旦执行了操作,会立刻将操作的语句记录到aof文件中 |
appendfsync everysec | 每秒向aof文件进行一次写入操作(默认) |
appendfsync no | 不主动向aof执行写入操作,由系统自行判断何时向磁盘执行写入操作 |
关于搭建redis集群:
命令 | 说明 |
---|---|
info replication | 查看当前服务详细信息 |
redis-server --daemonize yes | 后台启动 |
redis-server /path/to/your/redis.conf --daemonize yes | 指定配置文件启动 |
1:(主从复制(replica))
介绍:主从复制,master以写为主,(默认)slave以读为主;当master数据变化的时候,自动将新的数据异步同步到slave数据库(根据offset)。
心跳:从节点会定时向主节点发送请求,主节点接收后会向从节点推送数据。
2:(哨兵模式)
# sentinel的端口号,如果配置3个sentinel,只需要修改这个port即可,即:26380、26381、26382
port 26380
# 监视127.0.0.1:6380的主节点,且至少有2个Sentinel判断主节点失效,才可以自动故障迁移
sentinel monitor mymaster 127.0.0.1 6380 2
#指定了Sentinel认为服务器已经断线所需的毫秒数;如果服务器在给定的毫秒数之内,没有返回sentinel发送的PING命令的回复
#或者返回一个错误,那么Sentinel将这个服务器标记为主观下线(subjectively down,简称 SDOWN)
sentineldown-after-milliseconds mymaster 30000
# 故障迁移超时时间
sentinel failover-timeout mymaster 180000
#指定了在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步,这个数字越小,完成故障转移所需的时间就越长。
sentinel parallel-syncs mymaster 1
3:注意
- 三台redis主机网络相互ping通且注意防火墙配置
- 三大命令
- 主从复制:replicaof 主库IP 主库端口; 配从(库)不配主(库)
- 改换门庭:slaveof 新主库IP 新主库端口
- 自立为王:slaveof no noe 主库IP 主库端口