redis-保姆级配置详解

################################## NETWORK #######################

bind 127.0.0.1 172.88.19.1 #监听ip,多个ip用空格分隔

protected-mode yes #启用时,如果 Redis 没有绑定特定的 IP 地址(即通过 bind 参数指定),并且没有设置密码(通过 requirepass 参数设置),Redis 将只允许来自本地回环接口(127.0.0.1 和 ::1)的连接。

port 6379 #端口

tcp-backlog 511 #

timeout 0 #客户端(redis-cli)闲置多长时间后关闭连接

tcp-keepalive 300

################################# GENERAL ###################

daemonize yes

pidfile /var/run/redis_6379.pid #redis进程的PID文件存放位置

loglevel notice #日志级别 debug\verbose\notice\warning

logfile "/opt/redis-log/redis-6379.log"

databases 16 #数据库的数量

always-show-logo no

set-proc-title yes

proc-title-template "{title} {listen-addr} {server-mode}"

locale-collate ""

################################ SNAPSHOTTING ################

save 3600 1 #rdb配置项,在 3600 秒(1 小时) 内,若至少发生 1 次写操作,则生成 RDB 快照。无持久化需求,可设置为save ""

save 300 100 #在 300 秒(5 分钟) 内,若至少发生 100 次写操作,则生成 RDB 快照。

save 60 10000 #在 60 秒(1 分钟) 内,若至少发生 10000 次写操作,则生成 RDB 快照。

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump-6379.rdb #rdb持久化存储文件名称

rdb-del-sync-files no

dir /opt/redis-data-6379 #指定存放位置

################################# REPLICATION #################

replicaof 172.88.19.102 6379 #Slave01 节点Redis服务连接Master节点Redis服务的IP地址和端口,在 Redis服务启动时会自动从Master节点进行数据同步。

masterauth rezLxxxR1wT8 #Slave节点Redis服务连接Master节点Redis服务的密码,master可不设置

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync yes

repl-diskless-sync-delay 5

repl-diskless-sync-max-replicas 0

repl-diskless-load disabled

repl-disable-tcp-nodelay no

replica-priority 100

################################## SECURITY ####################

acllog-max-len 128

requirepass rezL2pAqR1wT8 #设置客户端连接Redis服务的连接密码

################################### CLIENTS #####################

maxclients 10000

############################## MEMORY MANAGEMENT ###################

maxmemory 838860800 #实例最多内存(字节)

maxmemory-policy noeviction #当 Redis 使用的内存达到或超过 maxmemory 限制时,Redis 会根据配置的内存淘汰策略来决定如何处理新的写入请求。Redis 支持以下几种内存淘汰策略:

noeviction:默认策略,当内存达到或超过 maxmemory 限制时,Redis 会拒绝新的写入请求,并返回错误信息。

volatile-lru:从设置了过期时间的键中选择最近最少使用的键进行删除,直到内存使用量低于 maxmemory 限制。

allkeys-lru:从所有键中选择最近最少使用的键进行删除,直到内存使用量低于 maxmemory 限制。

volatile-random:从设置了过期时间的键中随机选择键进行删除,直到内存使用量低于 maxmemory 限制。

allkeys-random:从所有键中随机选择键进行删除,直到内存使用量低于 maxmemory 限制。

volatile-ttl:从设置了过期时间的键中选择剩余生存时间最短的键进行删除,直到内存使用量低于 maxmemory 限制。

maxmemory-samples 5

maxmemory-eviction-tenacity 10

replica-ignore-maxmemory yes

active-expire-effort 1

############################# LAZY FREEING ################

lazyfree-lazy-eviction no

lazyfree-lazy-expire no

lazyfree-lazy-server-del no

replica-lazy-flush no

lazyfree-lazy-user-del no

lazyfree-lazy-user-flush no

################################ THREADED I/O ####################

io-threads 1 #用于网络io处理的线程数,建议设置为 CPU 核心数的 50%~75%

io-threads-do-reads no #是否启用 I/O 线程处理读操作(接收客户端请求)。QPS < 5 万且无大键,cpu核数较少时,no

############################ KERNEL OOM CONTROL ###################

oom-score-adj no

oom-score-adj-values 0 200 800

#################### KERNEL transparent hugepage CONTROL ############

disable-thp yes

############################## APPEND ONLY MODE ####################

appendonly no #关闭aof记录 (有rdb ,当然也可以并行)

appendfilename "appendonly.aof" #日志文件名, aof开启才会生效

appenddirname "appendonlydir"

appendfsync everysec #指定更新日志的条件,有三个可选参数 : no表示由操作系统进行数据缓存同步到磁盘(速度快);always表示每次更新操作后手动调用fsync()将数据写到磁盘(速度慢但安全);everysec表示每秒同步一次(速度与安全性折中,默认值);

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

aof-timestamp-enabled no

################################ SHUTDOWN ####################

shutdown-timeout 10

shutdown-on-sigint default

shutdown-on-sigterm default

################################## SLOW LOG ###################

slowlog-log-slower-than 10000

slowlog-max-len 128

################################ LATENCY MONITOR ##############

latency-monitor-threshold 0 #设置延迟监控的阈值(毫秒),任何执行时间超过该值的操作都会被记录

################################ LATENCY TRACKING ###############

latency-tracking-info-percentiles 50 99 99.9 #设置延迟统计时计算的百分位数值,用于展示不同比例请求的延迟情况。 三个水位数

############################# EVENT NOTIFICATION ################

notify-keyspace-events ""

############################### ADVANCED CONFIG ##############

hash-max-listpack-entries 512 # 当 Hash 字段数 ≤512 且值长度 ≤64 字节时,使用紧凑编码

hash-max-listpack-value 64 # 单个值的最大长度限制(字节)

list-max-listpack-size -2 # 每个 listpack 节点最大占用内存(-2 表示 8KB)

list-compress-depth 0 # 列表两端不压缩的节点数(0 表示不压缩)

set-max-intset-entries 512 # 当 Set 元素全为整数且数量 ≤512 时,使用 intset 编码

set-max-listpack-entries 128 # 当 Set 转为 listpack 时的元素数阈值

set-max-listpack-value 64 # 单个元素的最大长度限制(字节)

zset-max-listpack-entries 128 # 当 ZSet 元素数 ≤128 且值长度 ≤64 字节时,使用 listpack

zset-max-listpack-value 64 # 单个值的最大长度限制(字节)

hll-sparse-max-bytes 3000

stream-node-max-bytes 4096

stream-node-max-entries 100

activerehashing yes

client-output-buffer-limit normal 0 0 0 #普通客户端(非复制从节点、非发布订阅客户端)的输出缓冲区限制:

hard limit:缓冲区达到此大小时立即断开客户端连接。

soft limit:缓冲区连续超过此大小达 soft seconds 秒时断开客户端连接。

0 值:表示禁用该限制 (默认禁止)。

client-output-buffer-limit replica 256mb 64mb 60 #设置复制从节点的输出缓冲区限制。从节点缓冲区超过 256MB 时立即断开。或连续 60 秒 超过 64MB 时断开。

client-output-buffer-limit pubsub 32mb 8mb 60 #设置发布订阅客户端的输出缓冲区限制。发布订阅客户端缓冲区超过 32MB 时立即断开。或连续 60 秒 超过 8MB 时断开。

client-query-buffer-limit 1gb #设置客户端查询缓冲区的最大内存限制。

proto-max-bulk-len 512mb #设置单个命令参数(如 SET 的值、RPUSH 的元素)的最大长度。

hz 10

dynamic-hz yes

aof-rewrite-incremental-fsync yes #启用 AOF 重写期间的增量 fsync,避免单次 fsync 过大导致的阻塞。AOF 重写原理:

Redis 生成新的 AOF 文件时,将内存数据转换为写命令。

若新文件过大,单次 fsync(将数据刷盘)可能阻塞主线程。

增量 fsync:

将大文件分成多个块,每次 fsync 固定大小(默认 32MB)。

rdb-save-incremental-fsync yes #启用 RDB 生成期间的增量 fsync,避免单次 fsync 过大导致的阻塞。

RDB 持久化原理:

Redis 生成 RDB 快照时,将内存数据序列化到磁盘。

若 RDB 文件过大,单次 fsync 可能导致长时间阻塞。

增量 fsync:

将 RDB 文件分成多个块,每次 fsync 固定大小(默认 32MB)。

########################### ACTIVE DEFRAGMENTATION ##############

activedefrag no #禁用 Redis 的主动内存碎片整理功能,可通过执行手动碎片整理。生产环境建议开启,但会增加cpu使用率

active-defrag-ignore-bytes 100mb

active-defrag-threshold-lower 10

active-defrag-threshold-upper 100

active-defrag-cycle-min 1

active-defrag-cycle-max 25

active-defrag-max-scan-fields 1000

jemalloc-bg-thread yes #启用 jemalloc 后台线程


深耕运维行业多年,擅长运维体系建设,方案落地。欢迎交流!

V: ywjw996

《 运维经纬 》

相关推荐
陈天cjq1 小时前
Redis 实用型限流与延时队列:从 Lua 固定/滑动窗口到 Streams 消费组(含脚本与压测)
redis·junit·lua
Warren981 小时前
Lua 脚本在 Redis 中的应用
java·前端·网络·vue.js·redis·junit·lua
白鹭3 小时前
MySQL(多表查询练习)
数据库·mysql
xiao-xiang7 小时前
redis-sentinel基础概念及部署
数据库·redis·sentinel
云间月13147 小时前
飞算JavaAI:从智能调度到出行服务的全链路技术升级
java·redis·飞算javaai炫技赛
AI 嗯啦7 小时前
SQL详细语法教程(三)mysql的函数知识
android·开发语言·数据库·python·sql·mysql
柏油8 小时前
Spring @Cacheable 解读
redis·后端·spring
时序数据说8 小时前
国内时序数据库概览
大数据·数据库·物联网·时序数据库·iotdb
杰克尼9 小时前
mysql-条件查询案例
数据库·mysql