[04] Redis 配置文件
units#
计量单位说明:只支持 bytes,不支持 bit;对大小写不敏感。
include#
指定包含其他的配置文件,可以在同一主机上多个 Redis 实例之间使用同一份公共的配置文件,而同时各个实例又拥有自己的特定配置文件。
genernal#
daemonize#
以守护进程方式启动(是否为后台进程)
pidfile#
当 Redis 以守护进程方式运行时,Redis 默认会把 pid 写入 /var/run/redis.pid 文件中,可以通过该配置指定存放 pid 文件的位置,每个实例会产生一个不同的 pid 文件。
port#
指定 Redis 监听端口,默认 6379。
tcp-backlog#
可以理解是一个请求到达后至到接受进程处理前的队列,511 代表最大请求个数。
tcp-backlog 其实是一个连接队列:backlog 队列总和 = 未完成三次握手队列 + 已经完成三次握手队列
。
在高并发环境下你需要一个高 backlog 值来避免慢客户端连接问题。注意 Linux 内核会将这个值减小到 /proc/sys/net/core/somaxconn
的值,所以需要确认增大 somaxconn 和 tcp_max_syn_backing 两个值来达到想要的效果。
timeout#
timeout:一个空闲的客户端维持多少秒会关闭,0 为永不关闭。
bind#
- 默认情况
bind 127.0.0.1
只能接受本机的访问请求 - 不配置的情况下,无限制接受任何 ip 地址的访问
- 生产环境肯定要写应用服务器的地址
- 如果开启了
protected-mode
,就算没有设定bind ip
且没有设密码的情况下,Redis 依旧只允许接受本机的响应,所以两个都要搞
tcp-keepalive#
对访问客户端的一种心跳检测,每个 n 秒检测一次。如果设置为0,则不会进行 Keepalive 检测。官方推荐设为 60 秒。
about log#
- log level:指定日志记录级别。4 个级别根据使用阶段来选择,生产环境选择 notice 或者 warning。
- logfile:日志记录方式,默认为标准输出;如果配置 Redis 为守护进程方式运行,而这里又配置日志记录方式为标准输出,则日志将会发送给 /dev/null
- syslog-*
databases#
设置数据库的数量
snapshotting#
RDB 是整个内存压缩过的 Snapshot,RDB 的数据结构可以配置复合的快照触发条件。
save#
指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合。
如果想禁用 RDB 持久化策略,只要不设置任何 save 指令,或者给 save 传入一个空字符串参数也行。
如果在客户端使用 save
指令,会立即备份(就算 Redis 当前并没有满足备份策略)。
stop-writes-on-bgsave-error#
默认是 yes;如果配置成 no,表示不在乎数据不一致或者有其他的手段发现和控制。
rdbcompression#
对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,Redis 会采用 LZF 算法进行压缩。如果不想消耗 CPU 来进行压缩的话,可以设置为 no 关闭此功能,但会导致数据文件变得巨大。
rdbchecksum#
在存储快照后,还可以让 Redis 使用 CRC64 算法来进行数据校验,但是这样做会增大大约 10% 的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。
dbfilename#
分别代表:指定本地数据存放文件名、指定本地数据库存放目录
replication#
slaveof#
设置本机为 slave 服务时,设置 master 服务的 IP地址及端口。在 Redis 启动时,它会自动从 master 进行数据同步。
masterauth#
当 master 服务设置了密码保护时,slave 服务连接 master 的密码。
slave-read-only#
security#
设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH <password>
命令提供密码,默认关闭。
limit#
maxclient#
设置同一时间最大客户端连接数。当客户端连接数达到限制时,Redis 会关闭新的连接并向客户端返回 max numbeR of clients reached 错误信息。如果设置 maxclients 为 0,则表示不做限制。
maxmemory#
设置 Redis 可以使用的最大内存限制。
一旦到达内存使用上限,Redis 将会试图移除内部数据,移除规则可以通过 maxmemory-policy
来指定。如果 Redis 无法根据移除规则来移除内存中的数据或者设置了“不允许移除”,那么 Redis 则会针对那些需要申请内存的指令返回错误信息,比如 SET、LPUSH 等。
maxmemory-policy#
maxmemory-samples#
设置样本数量,LRU 算法和最小 TTL 算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小。一般设置 3 到 7 的数字,数值越小样本越不准确,但是性能消耗也越小。
append only mode#
appendonly#
指定是否在每次更新操作后进行日志记录,Redis 在默认情况下是异步的把数据写入磁盘。如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 Redis 本身同步数据文件是按上面 save 条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为 no。
appendfilename#
appendfsync#
指示更新日志的条件,共有 3 个可选值:
- always:同步持久化,每次发生数据变更会立即记录到磁盘,性能较差但数据完整性比较好(慢、安全)
- everysec:出厂默认推荐,异步操作,每秒记录;如果一秒内宕机,有数据丢失(折中,默认值)
- no:等 OS 进行数据缓存同步到磁盘(快)
about rewrite#
no-appendfsync-onrewrite#
重写时是否可以运行 appendfsync,用默认 no 即可,保证数据安全性。
auto-aof-rewrite-*#
Redis 会记录上次重写时的 AOF 大小,默认配置是当 AOF 文件大小是上次 rewrite 后大小的一倍且文件大于 64M 时触发。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?