以下是redis.conf
中一些常见参数的详细说明:
-
daemonize
:是否以后台进程运行,默认为no
; pidfile
:如以后台进程运行,则需指定一个pid
,默认为/var/run/redis.pid
;bind
:绑定主机IP
,默认值为127.0.0.1
;port
:监听端口,默认为6379
;timeout
:超时时间,默认为300
(秒);loglevel
:日志记录等级,有4个可选值,debug
,verbose
(默认值),notice
,warning
;logfile
:日志记录方式,默认值为stdout
;databases
:可用数据库数,默认值为16
,默认数据库为0
;save <seconds> <changes>
:指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合;rdbcompression
:存储至本地数据库时是否压缩数据,默认为yes
;dbfilename
:本地数据库文件名,默认值为dump.rdb
;dir
:本地数据库存放路径,默认值为./
;slaveof <masterip> <masterport>
:当本机为从服务时,设置主服务的IP
及端口;masterauth <master-password>
:当本机为从服务时,设置主服务的连接密码;requirepass
:连接密码;maxclients
:最大客户端连接数,默认不限制;maxmemory <bytes>
:设置最大内存,达到最大内存设置后,Redis
会先尝试清除已到期或即将到期的Key
,当此方法处理后,任到达最大内存设置,将无法再进行写入操作;appendonly
:是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis
本身同步数据文件是按上面sava
条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认值为no
;appendfilename
:更新日志文件名,默认值为appendonly.aof
;appendfsync
:更新日志条件,共有3个可选值。no
表示等操作系统进行数据缓存同步到磁盘,always
表示每次更新操作后手动调用fsync()
将数据写到磁盘,everysec
表示每秒同步一次(默认值);vm-enabled
:是否使用虚拟内存,默认值为no
;vm-swap-file
:虚拟内存文件路径,默认值为/tmp/redis.swap
,不可多个Redis
实例共享;vm-max-memory
:将所有大于vm-max-memory
的数据存入虚拟内存,无论vm-max-memory
设置多小,所有索引数据都是内存存储的,也就是说,当vm-max-memory
设置为0
的时候,其实是所有value
都存在于磁盘。默认值为0
;vm-page-size
:设置swap
文件中的page
数量,由于页表是在放在内存中的,在磁盘上每8个pages
将消耗1byte
的内存;vm-pages
:设置swap
文件中的page
数量,由于页表是在放在内存中的,在磁盘上每8个pages
将消耗1byte
的内存;vm-max-threads
:设置访问swap
文件的线程数,设置最好不要超过机器的核数,如果设置为0
,那么所有对swap
文件的操作都是串行的,可能会造成比较长时间的延迟,但是对数据完整性有很好的保证;glueoutputbuf
:指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法;hash-max-zipmap-entries
:hash-max-zipmap-value
:指定是否激活重置哈希,默认为开启;activerehashing yes
:指定是否启用虚拟内存机制,默认值为no
。
除了之前提到的参数,Redis 的配置文件中还有以下一些常用参数:
-
tcp-backlog
:TCP 监听的最大容纳数量,在高并发的环境下,需要把这个值调高以避免客户端连接缓慢的问题。 unixsocket
:指定 Redis 监听的 Unix socket 路径,默认不启用。unixsocketperm
:指定 Unix socket 文件的权限。timeout
:指定在一个客户端空闲多少秒之后关闭连接(0 表示永不关闭)。tcp-keepalive
:单位是秒,表示将周期性的使用 SO_KEEPALIVE 检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是 300 秒,如果设置为 0,则不会周期性的检测。supervised
:可以通过 upstart 和 systemd 管理 Redis 守护进程。pidfile
:配置 PID 文件路径,当 Redis 作为守护进程运行的时候,它会把 pid 默认写到指定文件里面。syslog-enabled
:要想把日志记录到系统日志,就把它改成 yes,也可以可选择性的更新其他的 syslog 参数以达到你的要求。syslog-ident
:设置系统日志的 ID。syslog-facility
:指定系统日志设置,必须是 USER 或者是 LOCAL0-LOCAL7 之间的值。slave-serve-stale-data
:当一个 slave 与 master 失去联系,或者复制正在进行的时候,slave 可能会有两种表现:如果为 yes,slave 仍然会应答客户端请求,但返回的数据可能是过时;如果为 no,出去 INFO 和 SLAVOF 命令之外的任何请求都会返回一个错误 "SYNC with master in progress"。slave-read-only
:你可以配置一个 slave 实体是否接受写入操作。io-threads
:启用多线程。- tcp-backlog:确定 TCP 连接中已完成队列的长度,应小于 Linux 系统的/proc/sys/net/core/somaxconn 的值,默认为511。
- tcp-keepalive:指定 ACKs 的时间周期,单位为秒,值非 0 的情况表示将周期性的检测客户端是否可用,默认值为 0。
- lua-time-limit:设置 Lua 脚本的最大运行时间,单位为毫秒,默认值为 5000。
- notify-keyspace-events:事件通知,默认不启用。
- slave-serve-stale-data:当 slave 端在主从复制的过程中与 master 端断开了连接,此参数用于设置 slave 端的行为,是继续提供服务即使数据可能不是最新的,还是对请求返回一个错误信息,默认配置是继续提供服务。
- slave-read-only:自 Redis 2.6 版本开始,slave 端默认为只读。
- repl-disable-tcp-nodelay:是否启用 TCP_NODELAY,如果启用则会使用少量的 TCP 包和带宽去进行数据传输到 slave 端,当然速度会比较慢;如果不启用则传输速度比较快,但是会占用比较多的带宽。
- maxmemory-samples:设置 LRU 算法检查的样本数,默认值为 5。
这些参数可以根据具体的需求进行调整,以优化 Redis 的性能和行为。建议在修改配置文件之前,先了解每个参数的作用和影响,并根据实际情况进行合理的配置。同时,还可以参考 Redis 的官方文档获取更详细的信息。
其他参数部分1:
1. cluster-enabled
:是否启用 Redis 集群模式,默认为 no
。
2. cluster-config-file
:指定集群配置文件的名称,默认为 nodes.conf
。
3. cluster-node-timeout
:集群节点超时时间,默认为 15000 毫秒。
4. slowlog-log-slower-than
:设定慢查询日志的执行时间阈值(微秒),超过该阈值的命令将被记录到慢查询日志中。
5. slowlog-max-len
:慢查询日志的最大长度。
6. hz
:Redis 内部的事件处理频率,默认为 10 。
7. tcp-backlog
:TCP 连接的等待队列长度。
8. notify-keyspace-events
:配置键空间通知事件。
9. client-output-buffer-limit
:对不同类型的客户端设置输出缓冲区的限制。
10. slave-serve-stale-data
:从服务器在与主服务器失去连接时,是否响应客户端请求,默认为 yes
。
11. slave-read-only
:从服务器是否为只读模式,默认为 yes
。
12. repl-disable-tcp-nodelay
:主从复制时是否禁用 TCP_NODELAY 选项,默认为 no
。
其他参数部分2:
1. tcp-keepalive
:设置 TCP 连接的保活机制,指定空闲多久后发送保活探测包。
2. lua-time-limit
:执行 Lua 脚本的最大运行时间,以毫秒为单位。
3. maxmemory-samples
:在计算内存使用和选择淘汰键时的采样数量。
4. stop-writes-on-bgsave-error
:当后台保存出错时是否禁止写入操作,默认为 yes
。
5. cluster-require-full-coverage
:在集群模式下,是否要求所有的键空间都被覆盖,默认为 yes
。
6. aof-load-truncated
:当加载 AOF 文件发现文件末尾不完整时的处理方式,默认为 yes
(继续加载)。
7. cluster-migration-barrier
:集群迁移的最小主节点数量阈值。
8. lazyfree-lazy-eviction
:是否惰性删除达到最大内存限制时的键,默认为 no
。
9. lazyfree-lazy-expire
:是否惰性删除过期的键,默认为 no
。
10. lazyfree-lazy-server-del
:是否惰性删除服务器端的一些命令操作,如 FLUSHALL
、 FLUSHDB
等,默认为 no
。
1. activedefrag
:是否启用主动碎片整理,默认为 no
。
2. maxmemory-policy
:当内存达到上限时的淘汰策略,除了前面提到的常见策略,还包括 volatile-ttl
(淘汰即将过期的键)等。
3. cluster-slave-validity-factor
:从节点与主节点失联后,判定从节点失效的时间放大倍数。
4. repl-ping-slave-period
:从节点向主节点发送 ping 的时间间隔。
5. cluster-replica-no-failover
:是否禁止从节点在主节点故障时进行故障转移,默认为 no
。
6. cluster-replica-validity-factor
:从节点与主节点的复制偏移量检查的放大倍数。
7. hash-max-ziplist-entries
:哈希表在使用压缩列表时,键值对的最大数量。
8. hash-max-ziplist-value
:哈希表在使用压缩列表时,值的最大长度。
9. list-max-ziplist-size
:列表在使用压缩列表时的最大长度。
10. zset-max-ziplist-entries
:有序集合在使用压缩列表时,元素的最大数量。
11. zset-max-ziplist-value
:有序集合在使用压缩列表时,元素成员的最大长度。
12. pubsub-channel-size
:发布订阅频道的最大订阅者数量。
13. rdbchecksum
:在生成 RDB 快照文件时是否进行校验和计算,默认为 yes
。
其他参数部分3:
1. cluster-announce-ip
:在集群环境中,节点用于通告给其他节点的 IP 地址。
2. cluster-announce-port
:在集群环境中,节点用于通告给其他节点的端口。
3. cluster-announce-bus-port
:集群内部通信总线使用的端口。
4. cluster-node-timeout-factor
:用于计算节点超时时间的系数。
5. rename-command
:重命名某些危险命令,以增强安全性。
6. hz
:决定 Redis 内部事件的处理频率。
7. latency-monitor-threshold
:设置延迟监控的阈值。
8. repl-backlog-size
:复制积压缓冲区的大小。
9. min-slaves-to-write
:指定在执行写操作时所需的最少健康从节点数量。
10. min-slaves-max-lag
:从节点与主节点的最大延迟时间,超过此值的从节点被视为不健康。
其他参数部分4:
1. cluster-replica-validity-factor
:用于调整从节点与主节点复制偏移量检查的容错系数。
2. cluster-allow-reads-when-down
:控制在集群不可用时是否允许读取操作,默认为 no
。
3. cluster-migration-barrier
:定义触发迁移操作所需的主节点数量阈值。
4. cluster-announce-tcp-ports
:在集群环境中,通告 TCP 端口信息。
5. client-query-buffer-limit
:限制客户端查询缓冲区的大小。
6. proto-max-bulk-len
:协议中批量操作允许的最大长度。
7. max-appendonly-import-time
:AOF 重写导入数据的最大允许时间。
8. dynamic-hz
:根据负载动态调整 hz
值。
9. jemalloc-bg-thread
:启用或禁用 jemalloc 的后台线程。
10. jemalloc-mib-heap-limit
:设置 jemalloc 堆内存的限制大小(以 MiB 为单位)。
其他参数部分5:
1. cluster-announce-hostname
:在集群环境中,节点用于通告的主机名。
2. activedefrag-threshold-lower
:触发主动碎片整理的内存碎片下限阈值。
3. activedefrag-threshold-upper
:触发主动碎片整理的内存碎片上限阈值。
4. activedefrag-cycle-min
:主动碎片整理的最小运行时间。
5. activedefrag-cycle-max
:主动碎片整理的最大运行时间。
6. maxmemory-eviction-tenacity
:控制内存淘汰策略的持久性。
7. rdb-del-sync-files
:在执行 RDB 保存时,是否同步删除旧的 RDB 文件,默认为 no
。
8. repl-diskless-sync-delay
:在无盘复制时的延迟时间。
9. cluster-password
:集群的密码设置。
10. slave-priority
:从节点的优先级,用于主从切换。