redis的配置文件存放位置
windows系统下,redis的默认配置文件放在安装目录的根目录,即redis.windows.conf
linux系统下,redis的默认配置文件存放在安装目录的根目录,即redis.conf
该篇以linux下的配置文件为例,
redis配置文件的注释
这一段文字出现在redis.conf中的第3行-13行,讲解了两个方面
- redis配置文件的单位,以bytes为基础
- redis配置文件的单位不区分大小写
这一段文字出现在redis.conf中的第15行-31行,讲解了includes方块。
- redis.conf可以像struts.xml配置文件,以当前配置文件为根,导入其他配置文件
接下来是general(通用)模块,在redis.conf的33行到118行
daemonize
守护线程,默认以前台线程启动。将值设置为yes,将后台运行。redis instance会将进程号pid写入默认文件/var/run/redis.pid。
pidfile
设置pid文件的存放位置,默认为/var/run/redis.pid
port
端口号,默认为6379,此处可设置,当不同端口号的客户端启动,将意味这些是不同客户端,可理解为分布式
tcp-backlog
设置tcp的backlog,backlog其实是一个TCP连接中的队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列。
在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。注意这个值不能大于Linux系统在/proc/sys/net/core/somaxconn设定的值的值,默认511
bind
redis默认情况下会在服务器上所有有效的网络接口上监听客户端连接,如果想他在指定的一个或多个网络接口上监听,可以绑定一个或多个ip,以此来做限定,多个ip用空格隔开
timeout
当客户端闲置多少秒后关闭连接,设置为0表示关闭此功能,默认关闭
tcp-keepalive
单位为妙,表示使用SO_KEEPALIVE检测客户端是否处于健康状态,避免服务器长时间处于堵塞状态
loglevel
日志级别。有四个选项,
debug(记录大量日志信息,开发测试阶段使用),
verbose(较多日志信息),
notive(适量日志信息,使用于生产环境),
warning(仅有部分重要、关键信息才会被记录)
logfile
日志文件的位置,当指定为空字符串时,为标准输出,如果redis已守护进程模式运行,那么日志将会输出到 /dev/null 。
syslog-enabled
是否把日志记录到系统日志。默认注释掉
database
设置数据库的数目,默认16个,下标为0-15的数值
接下来是SNAPSHOTTING(快照)模块,在redis.conf的120行到187行,此块涉及到redis的持久化–rdb
save
保存快照数据到磁盘,格式是save < seconds> < changes> 。意思是当多少秒内改变了多少个keys就保存一次到磁盘文件中。
save 900 1 当900秒内改变1次key就保存
save 300 10 当300秒内改变10次key就保存
save 60 10000 当60秒内改变10000次key就保存
如果想禁用rdb功能,可以将save传空参,即save “”,或者注释掉所有save
stop-writes-on-bgsave-error
默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘, 否则就会没人注意到灾难的发生。 如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。
然而你要是安装了靠谱的监控,你不在乎数据不一致,你就改成 no 好了。
rdbcompression
对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能
rdbchecksum
在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
dbfilename
快照文件rdb的文件名
dir
快照文件rdb的存放目录,同时,aof文件也会存放在该目录,默认当前目录
接下来是SECURITY(安全)模块,在redis.conf的378行到411行,
requirepass
设置redis连接密码,默认是不用密码的
接下来是LIMITS(限制)模块,在redis.conf的412行到483行,
Maxclients
设置redis同时可以与多少个客户端进行连接。默认情况下无限制
当你无法设置进程文件句柄限制时,redis会设置为当前的文件句柄限制值减去32,因为redis会为自身内部处理逻辑留一些句柄出来。如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”以作回应。
maxmemory
设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。
maxmemory-policy
当内存使用达到最大值时,redis使用的移除规则。
1. volatile-lru 利用LRU算法移除设置过过期时间的key (LRU:最近使用 Least Recently Used )
2. allkeys-lru 利用LRU算法移除任何key
3. volatile-random 移除设置过过期时间的随机key
4. volatile-ttl 移除即将过期的key(minor TTL)
5. noeviction noeviction 不移除任何key,只是返回一个写错误 。默认选项
6. allkeys-random 移除随机key
maxmemory-samples
设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小,
接下来是APPEND ONLY MODE(快照)模块,在redis.conf的484行到600行,此块涉及到redis的持久化–aof(APPEND ONLY MODE追加模式)
appendonly
是否启用aof持久化方式 。即是否在每次更新操作后进行日志记录,默认配置是no
appendfilename
aof日志文件的文件名,默认值为appendonly.aof
appendfsync
aof文件刷新的频率。有三种:
- no 依靠OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差。
- always 每提交一个修改命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全
- everysec每秒钟都调用fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据。
默认everysec
auto-aof-rewrite-percentage
auto-aof-rewrite-min-size
设置重写的基准值,当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 。当AOF文件大小大于该配置项时自动开启重写。