Redis配置项说明和系统配置

本文详细探讨了Redis的系统配置,包括ulimit、TCP backlog、overcommit_memory、swappiness和THP,解释了它们对Redis性能的影响,并提供了优化建议。此外,还概述了Redis的配置项,如通用、RDB、AOF、内存、slowlog、主从复制、客户端、安全和集群配置,为高效运行Redis提供指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、系统配置

1.1、ulimit

对Linux操作系统来说,每一个Redis客户端连接,都会消耗一个文件描述符,系统默认的open files是1024,而Redis默认配置“maxclients”允许最大10000个客户端连接,在Redis内部最多会使用32个文件句柄,所以Redis建议将open files的值设置为10032个:

# 临时设置:
# ulimit -Sn 10032

1.2、TCP backlog

TCP backlog是已连接但未进行accept处理的SOCKET队列大小。Redis的默认值是511,而Linux系统的默认值只有128:

# 临时修改:
# echo 511 > /proc/sys/net/core/somaxconn 
# 永久修改:
# echo "net.core.somaxconn = 511" >> /etc/sysctl.conf
# sysctl -p

1.3、overcommit_memory

overcommit_memory是系统的内存分配策略,默认值是0,即在有足够的可用内存时,内存申请通过,否则申请失败。这在低可用内存环境下可能导致BGSAVEBGREWRITEAOF失败,所以Redis建议将该值设置为1,即允许超量使用内存直到用完为止:

# echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
# sysctl -p

1.4、swappiness

当物理内存不足时,可以临时使用由硬盘提供的swap分区。对于高吞吐、高并发的Redis来说,磁盘IO将会成为系统瓶颈,所以将swappiness设置为0,即使OOM killer也不使用swap:

# 临时设置:
# echo 0 > /proc/sys/vm/swappiness
# 永久设置:
# echo "vm.swappiness = 0" >> /etc/sysctl.conf
# sysctl -p

1.5、THP

为了给需要获得大量内存的应用程序快速分配内存,Linux内核增加了THP(大页内存)特性,支持2MB大页内存分配。这将会导致Redis重写期间消耗更多内存,Redis建议禁用此特性:

# 临时设置:
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# echo never > /sys/kernel/mm/transparent_hugepage/enabled

二、Redis配置项

2.1、通用配置

配置项说明默认值可选值
bindRedis运行绑定的地址127.0.0.1IP地址
portRedis监听的TCP端口号。设置为0时,不监听TCP端口63790-65535
unixsocket监听的unix套接字自定义的套接字文件
unixsocketperm套接字文件的权限700Linux文件系统可用权限
tcp-backlog等待处理的连接队列大小511整数值
daemonize是否以守护进程形式在后台运行Redisnoyes/no
pidfileRedis运行时进程ID文件/var/run/redis_6379.pid自定义的pid文件
loglevel日志级别noticedebug/verbose/notice/warning
logfile日志文件名空,即输出到/dev/null自定义的日志文件名和路径
databases可用的数据库数目16整数值
dir工作目录,RDB、AOF、日志文件默认放在该目录下./自定义的目录

2.2、RDB相关配置

配置项说明默认值可选值
saveRDB触发条件save 900 1/save 300 10/save 60 10000900秒内有一次写入,不配置将不触发
stop-writes-on-bgsave-errorbgsave过程中发生错误,Redis是否停止接收写指令yesyes/no
rdbcompression是否对RDB文件启用压缩yesyes/no
rdbchecksum是否对RDB文件进行校验yesyes/no
dbfilenameRDB文件名称,保存在配置项“dir”指定的目录下dump.rdb建议命名格式dump-{port}.rdb

2.3、AOF相关配置

配置项说明默认值可选值
appendonly是否启用AOF持久化noyes/no
appendfilenameAOF持久化的文件名,保存在配置项“dir”指定的目录下appendonly.aof建议命名为:appendonly-{port}.aof
appendfsync数据持久化策略everysec,每秒同步一次always(每次有写指令都同步)/everysec/no(由操作系统决定)
no-appendfsync-on-rewrite在AOF重写时,不做数据持久化操作noyes/no
auto-aof-rewrite-percentage当前AOF文件与上次重写后AOF文件大小的比值超过100时,触发AOF重写100整数值
auto-aof-rewrite-min-size当前AOF文件超过指定大小时,触发AOF重写64mb字节数
aof-load-truncatedRedis启动时,忽略AOF文件不完整的情况yesyes/no
aof-use-rdb-preamble在AOF重写时,是否使用RDB文件以加快重写速度yesyes/no

2.4、内存相关配置

配置项说明默认值可选值
maxmemoryRedis最大可用内存0,不限制字节数
maxmemory-policy内存不够时,数据的删除策略noeviction,不删除数据volatile-lru/allkeys-lru/volatile-lfu/allkeys-lfu/volatile-random/allkeys-random/volatile-ttl/noeviction
maxmemory-samplesLRU采样数5整数值
replica-ignore-maxmemoryRedis5版本以后,主从复制模式中,从节点是否忽略“maxmemory”最大内存限制yesyes/no

2.5、slowlog相关配置

配置项说明默认值可选值
slowlog-log-slower-than慢查询的时间阈值10000,单位微秒整数值
slowlog-max-len内存中记录慢查询的队列长度128整数值

2.6、主从复制相关配置

配置项说明默认值可选值
replicaof指定当前节点作为哪个节点的从节点replicaof [ip] [port]
masterauth主节点的验证密码明文密码
replica-serve-stale-data从节点与主节点连接中断后,从节点是否继续接收客户端请求yesyes/no
replica-read-only从节点是否为只读模式。在集群模式下,从节点默认读写都不可用,需要手动开启只读yesyes/no
repl-ping-replica-period主节点向从节点发送ping消息,判断从节点是否存活的时间间隔,单位是秒10整数值
repl-timeout主从复制超时时间,单位是秒60整数值
repl-disable-tcp-nodelay主从复制时,是否禁用TCP NODELAY。不禁用时,主节点的数据会立即发送给从节点;禁用时,主节点会将小的TCP包合并再发送给从节点,以节省带宽noyes/no
repl-backlog-size复制积压缓冲区大小1mb字节数
repl-backlog-ttl主节点在没有从节点时,释放复制积压缓冲区的时间,单位秒。设置为0时,将永不释放3600整数值
replica-priority从节点的优先级。用在哨兵模式下的从节点选举100整数值
repl-diskless-sync是否开启无盘复制noyes/no
repl-diskless-sync-delay无盘复制时,RDB操作的延迟时间,单位是秒5整数值
min-replicas-to-write0整数值
min-replicas-max-lag当主节点发现从节点小于“min-replicas-to-write”个,并且延迟小于10秒时,停止写入操作10整数值

2.7、客户端相关配置

配置项说明默认值可选值
timout断开与客户端连接的空闲时间,单位是秒0(永不断开)整数值
tcp-keepalive发送TCP ACK进行心跳检测的周期,单位是秒300整数值
maxclients客户端连接的最大数量10000整数值

2.8、安全相关配置

配置项说明默认值可选值
protected-mode当没有通过“bind”绑定地址,并且没有通过“requirepass”设置密码时,仅允许本地登录yesyes/no
requirepass客户端连接时的验证密码明文密码
rename-command将关键命令重命名rename-command CONFIG “”:将禁用CONFIG命令

2.9、集群相关配置

配置项说明默认值可选值
cluster-enabled是否在该Redis实例上启用集群功能yes/no
cluster-config-file集群配置文件的名称,在启用集群功能时自动生成,不要手动修改它nodes-6379.conf
cluster-node-timeout集群节点不可用的最大时间,单位是毫秒。对于一个主节点,如果超过该时间不可用,将被从节点代替15000整数值
cluster-slave-validity-factor从节点有效性判断因子。如果设置为0,从节点在任何时候都可以参与故障转移;如果设置为正整数,例如设置为10,假如cluster-node-timeout为5秒,则从节点与主节点失联时间超过50秒时,该节点不参与故障转移10整数值
cluster-migration-barrier主从节点切换需要的最小从节点个数1整数值
cluster-require-full-coverage如果设置为“yes”(默认值),在槽没有被完全分配时,集群将不接收写入请求yesyes/no
cluster-allow-reads-when-down如果设置为“no”(默认值),当集群中节点被下线或无法连接到法定主节点时将不会接收任何请求noyes/no
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值