文章目录
一.配置文件
1.1 Units 配置度量单位
配置文件开头定义了基本的度量单位,仅支持bytes,不支持bit;大小写不敏感;
1.2 INCLUDES 多实例的情况下把公用的配置文件提取出来
1.3 网络相关配置
1.3.1 bind
默认情况bind=127.0.0.1只能接受本机的访问请求。不配置bind参数,则接受任何ip地址的访问
如果设置protected-mode为on,那么在没有设置bind ip且未设置密码,Redis只允许接受本机的响应
1.3.2 protected-mode
若即没有设置安全模式又没有设置bind参数,把 protected-mode设置为no则任何ip地址的客户端可访问redis服务器
1.3.3 Port
端口号,默认 6379
1.3.4 tcp-backlog 在高并发环境下,高backlog值来避免慢客户端连接问题
设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列。
三次握手:
client 发送 SYN 到 server,将状态修改为 SYN_SEND,如果 server 收到请求,则将状态修改为 SYN_RCVD,并把请求放到 syns queue 队列中。
server 回复 SYN+ACK 给 client,如果 client 收到请求,则将状态修改为 ESTABLISHED,并发送 ACK 给 server。
server 收到 ACK,将状态修改为 ESTABLISHED,并把该请求从 syns queue 中放到 accept queue。
在linux系统内核中维护了两个队列:syns queue 和 accept queue
syns queue
用于保存半连接状态的请求,其大小通过 /proc/sys/net/ipv4/tcp_max_syn_backlog 指定,一般默认值是 512。
accept queue
用于保存全连接状态的请求,其大小通过 /proc/sys/net/core/somaxconn 指定,在使用 listen函数时,内核会根据传入的 backlog 参数与系统参数 somaxconn,取二者的较小值。
注:增大tcp-backlog需要确认同时增大/proc/sys/net/core/somaxconn和/proc/sys/net/ipv4/tcp_max_syn_backlog(128)两个值来达到想要的效果
1.3.5 timeout 一个空闲的客户端维持多少秒会关闭
0表示永不关闭
1.3.6 tcp-keepalive 对访问客户端的一种心跳检测
每个n秒检测一次,单位为秒。如果设置为0,则不会进行保活检测,建议设置成60
1.4 GENERAL
1.4.1 daemonize 后台进程运行
设置为yes,守护进程后台启动
1.4.2 pidfile 存放pid文件的位置
每个实例会产生一个不同的pid文件
1.4.3 loglevel 指定日志记录级别
Redis总共支持四个级别:debug、verbose、notice、warning,默认为notice
debug 用于开发和测试
varbose 不像debug会记录那么多
notice 常用于生产环境
warning 只有非常重要或者严重的信息会记录到日志
四个级别根据使用阶段来选择,生产环境选择notice 或者warning
1.4.4 logfile 日志文件名称
1.4.5 databases 16
设定库的数量 默认16,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id
1.5 SECURITY
1.5.1 设置密码
1.6 CLIENTS
1.6.1 maxclients 最大连接数
集群中需要配置合适的连接数
1.7 MEMORY MANAGEMENT
1.7.1 maxmemory
建议必须设置,否则,内存占满会造成服务器宕机
设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。
如果redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等;对于无内存申请的指令,仍然会正常响应,比如GET等。
如果是主节点redis,那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存。
1.7.2 maxmemory-policy
volatile-lru:使用LRU算法移除key,只对设置了过期时间的键;
allkeys-lru:在所有集合key中,使用LRU算法移除key
volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键
allkeys-random:在所有集合key中,移除随机的key
volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key
noeviction:不进行移除。针对写操作,只是返回错误信息(默认)
1.7.3 maxmemory-samples
设置样本数量
一般设置3到7的数字,数值越小样本越不准确,但性能消耗越小。
1.8 LAZY FREEING 逻辑删除
在使用 FLUSHDB 和 FLUSHALL 删除包含大量键的数据库时,造成redis阻塞的情况;在清理过期数据和淘汰内存超限的数据时,如果遇到大体积的键可能会造成服务器阻塞。 redis 4.0 引入了lazyfree的机制,可以将删除键或数据库的操作放在后台线程里执行, 从而尽可能地避免服务器阻塞。
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no