当前位置: 首页 > news >正文

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

                                                    《 运维经纬 》

http://www.xdnf.cn/news/1304983.html

相关文章:

  • 焊接机器人保护气体效率优化
  • 18- 网络编程
  • NAS播放器的新星,一站式全平台媒体库管理工具『Cinemore』体验
  • 文档对比(java-diff-utils)
  • HTML5新增属性
  • 【机器学习深度学习】OpenCompass 评测指标全解析:让大模型评估更科学
  • 从前端框架到GIS开发系列课程(26)在mapbox中实现地球自转效果,并添加点击事件增强地图交互性
  • 物联网(IoT)系统中,通信协议如何选择
  • 20250815在荣品RD-RK3588-MID开发板的Android13下调通TP芯片FT8206
  • 智慧零碳园区——解读2025 零碳产业园区实施路径规划【附全文阅读】
  • MqSQL中的《快照读》和《当前读》
  • SQL182 连续两次作答试卷的最大时间窗
  • C++第二十课:快递运费计算器 / 黑白配+石头剪刀布小游戏
  • Linux入门(十九)定时备份数据库
  • 第1篇_Go语言初探_环境搭建与HelloWorld
  • 802.11 Wi-Fi 竞争机制深度分析:CSMA/CA 与 DCF
  • 机器学习之PCA降维
  • Scrapy + Django爬虫可视化项目实战(二) 详细版
  • 轴机械臂cad【7张】三维图+设计说明书
  • 25.Linux 聚合链路与软件网桥
  • XXL-TOOL v2.0.0 发布 | Java工具类库
  • AI创业公司分析:Paloma
  • 自定义数据集(pytorchhuggingface)
  • SaltStack 基础
  • 【机器人-基础知识】ROS常见功能架构
  • 考研复习-计算机组成原理-第七章-IO
  • OpenCV---morphologyEx形态学操作
  • Jenkins+Python自动化持续集成详细教程
  • 【JavaEE】多线程 -- 死锁问题
  • Unity输入系统:旧版Input_System