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

《 运维经纬 》

相关推荐
ChatInfo11 分钟前
Etsy 把 1000 个 MySQL 分片迁进 Vitess:425TB 数据背后的真正问题不是性能,而是运维规模
数据库·人工智能·mysql
SPC的存折35 分钟前
6、MySQL设置TLS加密访问
linux·运维·服务器·数据库·mysql
老苏畅谈运维36 分钟前
DBA分析 ORA 报错的利器,errorstack让 Oracle 错误现原形
数据库·oracle·dba
紫青宝剑1 小时前
向量数据库 Milvus
数据库·milvus
雪碧聊技术1 小时前
数据库系统基础知识
数据库
Elastic 中国社区官方博客1 小时前
如何使用 LogsDB 降低 Elasticsearch 日志存储成本
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索·可用性测试
Dreamboat-L1 小时前
HBase远程访问配置(详细教程)
大数据·数据库·hbase
架构师老Y1 小时前
012、缓存架构设计:Redis高级应用与优化
redis·python·架构
刘~浪地球1 小时前
数据库与缓存--Redis 集群架构与优化
数据库·redis·缓存
羊小蜜.1 小时前
Mysql 11: 存储过程全解——从创建到使用
android·数据库·mysql·存储过程