一、解析配置文件 redis.conf
1、位置
2、Units单位
1)配置大小单位,开头配置了一些基本的度量单位,只支持bytes,不支持bit
2)对大小写不敏感
3、INCLUDES包含
可以通过includes包含,redis.conf 可以作为总闸,包含其他
4、GENERAL通用
1)Daemonize:设置为守护线程
2)Pidfile:进程管道id文件,如果没有指定其他路径,就用默认路径指定pid
3)Port:端口
4)tcp-backlog
设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和 = 未完成三次握手队列 + 已经完成三次握手队列
在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。注意Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_max_syn_backlog两个值来达到想要的效果。
5)Timeout:超时
6)Bind:
7)Tcp-keepalive:单位为秒,如果设置为0,则不会进行Keepalive检测,建议设置成60
8)Loglevel:日志级别
9)Logfile:日志文件名
10)Syslog-enabled:是否把日志输出到syslog中
11)Syslog-ident:指定syslog里的日志标志
12)Syslog-facility:指定syslog设备,可以是USER或LOCAL0 - LOCAL7
13)Databases:数据库,默认情况下有16个库
5、SNAPSHOTTING快照
1)Save:
① save秒钟 写操作次数
RDB是整个内存的压缩过的Snapshot,RDB数据结构,可以配置复合的快照出发条件,默认情况下:
是1分钟内改了1万次,或5分钟内改了10次,或15分钟内改了1次。
② 禁用
如果想禁用RDB持久化的策略,只要不设置任何save命令,或者给save传入一个空字符串参数也可以。
2)Stop-writes-on-bgsave-error
如何配置成no,表示数据不一致或者有其他的手段发现和控制
3)rdbcomprehension
rdbcomprehension:对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话redis会采用LZF算法进行压缩。如果你不想消耗CPU进行压缩的话,可以设置为关闭此功能。
4)rdbchecksum
rdbchecksum:在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望取到最大的性能提升,可以关闭此功能。
5)dbfilename
6)dir
6、REPLICATION复制
7、SECURITY安全
访问密码的查看、设置和取消
8、LIMITS限制
1)Maxclients
设置Redis同时可以和多少个客户端进行连接。默认情况下为10000个客户端。当你无法设置进程文件句柄限制时,redis会设置为当前的文件句柄减去32,因为,redis会为自身内部处理逻辑留一些句柄出来。如果达到了此限制,redis会拒绝新的连接请求,并且向这些连接请求方发出 “max number of clients reached” 以作回应。
2)Maxmemory
设置Redis可以使用的内存量。一旦达到内存使用上限,redis会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。如果redis无法根据移除规则来移除内存中的数据,或者设置了 “不允许移除”,那么Redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。
但是对于无内存申请的指令,仍然会正常响应,比如GET等。如果你的Redis是主Redis(说明你的redis有从redis),那么在设置内存使用上限的时候,需要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是 “不移除”的情况下,才不用考虑这个因素。
3)Maxmemory-policy:
volatile-lru:使用LRU算法移除key,只对设置了过期时间的键
allkeys-lru:使用LRU算法移除key
volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键
allkeys-random:移除随机的key
volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key
noeviction:不进行移除。针对写操作,只是返回错误信息。
4)Maxmemory-samples