目录
- 一、Redis查看当前配置命令
- 二、Redis基本配置
- 三、RDB全量持久化配置(默认开启)
- 四、AOF增量持久化配置
- 五、Redis key过期监听配置
- 六、Redis内存淘汰策略
- 七、总结
一、Redis查看当前配置命令
# Redis查看当前全部配置信息
127.0.0.1:6379> CONFIG GET *
# Redis查看当前指定配置信息
127.0.0.1:6379> CONFIG GET 配置名
# 例:查看配置端口
127.0.0.1:6379> CONFIG GET port
二、Redis基本配置
# 是否以守护进程启动 默认:no
daemonize no
# 用于设置Redis绑定的网络接口(网卡)。如果不配置bind,默认情况下Redis监听所有可用的网卡,redis只接受来自绑定网络接口的请求。
# Redis的配置文件中一般默认有bind 127.0.0.1,只允许本地连接,如果想要被远程访问注释掉bind配置即可。
bind 127.0.0.1
# 是否开启保护模式 默认:yes,是否有效会被bind和requirepass配置影响
## 当protected-mode为yes
### 注释bind和requirepass,redis的保护模式生效,只能通过本地连接
### 只注释bind,配置requirepass,redis的保护模式失效,可以通过密码远程连接
### 只注释requirepass,redis的保护模式失效,可以通过bind的ip无密码连接
## 当protected-mode为no
### 无论上面的哪种场景,客户端都可以根据 bind 及 requirepass 实际参数来连接到 redis
protected-mode yes
# redis服务端口 默认:6379
port 6379
# 客户端连接空闲时间单位秒,如果在指定时间内没有操作则会断开连接 默认:0(不超时)
timeout 0
# tcp心跳检测时间单位秒,对访问客户端的一种心跳检测,每个n秒检测一次 默认:0(不检测),建议设置成60
tcp-keepalive 0
# 客户端最大连接数,设置redis同时可以与多少个客户端进行连接 默认:10000
maxclients 10000
# 日志级别配置 默认:notice
## debug:能设置的最高的日志级别,打印所有信息,包括debug信息。
## verbose:打印除了debug日志之外的所有日志。
## notice:打印除了debug和verbose级别的所有日志。
## warning:仅打印非常重要的信息。
loglevel notice
# 日志文件输出路径配置
## 该路径默认为空。可以根据自己需要把日志文件输出到指定位置。
logfile ""
# 数据库数量配置 默认:16
databases 16
# 连接密码配置 默认无密码
requirepass 123456
三、RDB全量持久化配置(默认开启)
Redis的RDB(Remote Dictionary Base)持久化机制是通过将Redis数据库的某个时间点的状态以二进制格式保存到磁盘上的方式来实现持久化,当Redis服务器需要恢复数据时,可以通过加载RDB文件来恢复数据。
# 持久化数据存储在本地的文件名称 默认:dump.rdb
dbfilename dump.rdb
# 持久化数据存储在本地的路径,默认:./(当前工作目录)
dir /data
# 用于设置RDB持久化的时间间隔和条件
## 表示每900秒内有至少1个写操作就保存一次RDB文件
save 900 1
## 表示每300秒内有至少10个写操作就保存一次RDB文件
save 300 10
## 表示每10秒内有至少1000个写操作就保存一次RDB文件
save 60 10000
# 当RDB持久化时出现错误无法继续时,是否阻塞客户端变更操作,错误可能因为磁盘已满/磁盘故障/OS级别异常等 默认:yes
stop-writes-on-bgsave-error yes
# 是否启用RDB文件压缩,默认: yes,压缩往往意味着额外的cpu消耗,同时也意味这较小的文件尺寸以及较短的网络传输时间
rdbcompression yes
四、AOF增量持久化配置
可以简单的认为 AOF 就是日志文件,此文件只会记录“变更操作”(例如:set/del 等),如果 server 中持续的大量变更操作,将会导致 AOF 文件非常的庞大,意味着 server 失效后,数据恢复的过程将会很长;事实上,一条数据经过多次变更,将会产生多条 AOF 记录,其实只要保存当前的状态,历史的操作记录是可以抛弃的;因为 AOF 持久化模式还伴生了“AOF rewrite”。
- 优点:可以保持更高的数据完整性,如果设置追加file的时间是1s,如果redis发生故障,最多会丢失1s的数据;且如果日志写入不完整支持redis-check-aof来进行日志修复;AOF文件没被rewrite之前(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的flushall)
- 缺点:AOF文件比RDB文件大,且恢复速度慢。
# 是否开启AOP 默认:no
appendonly yes
# 指定AOF文件名称
appendfilename appendonly.aof
# 用于设置AOF文件的同步策略 默认:everysec
## 可以选择"always"、"everysec"或"no"。always表示每次写入都同步,everysec表示每秒同步一次,no表示由操作系统决定何时同步
appendfsync everysec
# 用于设置自动AOF重写的阈值。当AOF文件的扩展比例超过该值时,Redis会自动执行重写操作。默认值为100,表示当AOF文件的大小是上一次重写后大小的一倍时触发重写。
auto-aof-rewrite-percentage 100
# 用于设置自动AOF重写的最小大小。只有在AOF文件的大小大于该值时,才会执行重写操作。默认值为64MB,建议512mb
auto-aof-rewrite-min-size 64mb
# 用于设置在执行AOF文件重写时是否禁用同步。如果设置为yes,则在进行重写时不会进行同步操作,默认:no
no-appendfsync-on-rewrite no
# 用于设置在加载AOF文件时是否允许Redis忽略出现错误的命令。如果设置为"yes",则忽略错误;如果设置为"no",则不允许加载出现错误的AOF文件。默认:yes
aof-load-truncated yes
# 用于设置AOF文件的开头是否包含RDB格式的部分。如果设置为"yes",则在AOF文件的开头会先保存一份RDB格式的数据,这有助于加速数据加载。默认:no
aof-use-rdb-preamble no
五、Redis key过期监听配置
过期key事件监听可用于订单超时处理和已完成订单自动评价等功能,当给对应的key设置的过期时间到了会自动通知客户端,客户端将监听到的数据进行处理。
# key过期监听 默认:""(关闭),将notify-keyspace-events设置为Ex代表开启
notify-keyspace-events Ex
六、Redis内存淘汰策略
-
内存淘汰算法
-
noeviction
:当内存使用超过配置的时候会返回错误,不会驱逐任何键 -
allkeys-lru
:加入键的时候,如果过限,首先通过LRU算法驱逐最久没有使用的键 -
volatile-lru
:加入键的时候如果过限,首先从设置了过期时间的键集合中驱逐最久没有使用的键 -
allkeys-random
:加入键的时候如果过限,从所有key随机删除 -
volatile-random
:加入键的时候如果过限,从过期键的集合中随机驱逐 -
volatile-ttl
:从配置了过期时间的键中驱逐马上就要过期的键 -
volatile-lfu
:从所有配置了过期时间的键中驱逐使用频率最少的键 -
allkeys-lfu
:从所有键中驱逐使用频率最少的键
-
# 将redis存储内存设置100mb的界限,当超过这个数值开始走淘汰策略
maxmemory 100mb
# 配置策略 默认:noeviction
maxmemory-policy allkeys-lru
七、总结
这些配置项都是可以在Redis的配置文件中根据名称搜索到,如果配置文件中没有也会被设置一个默认值,可以登录Redis通过CONFIG GET 配置名
来查看配置内容,比如我们注释掉bind配置,通过CONFIG GET bind
查看到的就是bind配置的默认值"".