Redis高效配置与优化指南

一、配置文件与基础配置

1. 配置文件路径

通过 DNF 安装的 Redis,默认配置文件为:/etc/redis/redis.conf

2. 基础配置项

表格

配置项 说明与推荐值
bind 绑定监听地址,默认127.0.0.1(仅本地访问)。如需远程访问,修改为具体 IP(如192.168.1.100)或0.0.0.0(注意安全)。
port 监听端口,默认6379,建议修改为非默认端口以降低攻击风险。
daemonize 守护进程模式,推荐设为yes,让 Redis 在后台运行。
logfile 日志文件路径,推荐设为/var/log/redis/redis.log,便于问题排查。
databases 数据库数量,默认16,可根据业务需求调整(如32)。

二、持久化配置(RDB 与 AOF)

1. RDB(快照持久化)

RDB 是将内存数据定期保存到磁盘的二进制文件,适合备份与恢复。

表格

配置项 说明与推荐值
save 900 1 900 秒内至少 1 个键被修改则触发快照;可配置多条规则(如save 300 10、save 60 10000)。
rdbcompression 开启 RDB 文件压缩,推荐yes(节省磁盘空间,轻微 CPU 消耗)。
rdbchecksum 开启 RDB 文件校验,推荐yes(确保数据完整性,轻微 CPU 消耗)。
dbfilename RDB 文件名,默认dump.rdb。
dir RDB/AOF 文件保存目录,默认/var/lib/redis(确保目录权限正确)。

2. AOF(追加文件持久化)

AOF 是将写命令追加到文件的持久化方式,数据安全性更高。

表格

配置项 说明与推荐值
appendonly 开启 AOF,推荐yes(与 RDB 同时开启,双重保障)。
appendfilename AOF 文件名,默认appendonly.aof。
appendfsync 刷盘策略:- everysec(推荐,每秒刷盘,平衡性能与安全)- always(每次写命令刷盘,最安全但性能低)- no(由操作系统控制刷盘,性能最高但不安全)。
auto-aof-rewrite-percentage AOF 文件重写触发阈值(相比上次重写的增长比例),推荐100(即增长 100% 时重写)。
auto-aof-rewrite-min-size AOF 文件重写最小大小,推荐64mb(避免小文件频繁重写)。

三、内存管理与淘汰策略

1. 核心配置项

表格

配置项 说明与推荐值
maxmemory Redis 最大内存限制(如maxmemory 2gb),建议设为系统内存的 70%-80%,避免 OOM。
maxmemory-policy 内存淘汰策略(当内存达到maxmemory时触发):- allkeys-lru(推荐,删除最近最少使用的键)- volatile-lru(仅删除带过期时间的键中最近最少使用的)- allkeys-random(随机删除键)- volatile-ttl(删除即将过期的键)。
maxmemory-samples LRU/TTL 算法的采样数,默认5,推荐设为10(提高准确性,轻微 CPU 消耗)。

四、性能优化

1. 网络配置

表格

配置项 说明与推荐值
tcp-backlog TCP 连接队列长度,默认511,高并发场景推荐调大到1024或更高。⚠️ 需同时调整 OpenEuler 系统参数:echo 1024 > /proc/sys/net/core/somaxconn(临时生效),或在/etc/sysctl.conf中添加net.core.somaxconn=1024(永久生效)。
tcp-keepalive TCP 连接保活时间,默认300(秒),推荐设为60(秒),及时检测死连接。

2. 多线程 IO(Redis 6.0+)

Redis 6.0 引入多线程 IO,可显著提升网络处理性能。

表格

配置项 说明与推荐值
io-threads IO 线程数,推荐设为 CPU 核心数的一半(如 4 核 CPU 设为2,8 核设为4)。
io-threads-do-reads 开启多线程读,推荐yes(默认仅多线程写,开启后读也用多线程)。

3. 慢查询日志

用于记录执行时间过长的命令,便于性能分析。

表格

配置项 说明与推荐值
slowlog-log-slower-than 慢查询阈值(微秒),推荐设为10000(即 10 毫秒,超过该时间的命令被记录)。
slowlog-max-len 慢查询日志保留条数,推荐设为1024。

4. 内存分配器

Redis 默认使用jemalloc内存分配器(比 glibc 的malloc性能更好),无需额外配置,确保 OpenEuler 已安装jemalloc即可。


五、安全配置

1. 密码认证

表格

配置项 说明与推荐值
requirepass 设置 Redis 密码(如requirepass your_strong_password),强烈建议开启。

2. 命令重命名 / 禁用

禁用或重命名危险命令,防止误操作或攻击。

表格

配置项 说明与推荐值
rename-command CONFIG "" 禁用CONFIG命令(或重命名为复杂字符串,如rename-command CONFIG myconfig)。
rename-command FLUSHDB "" 禁用FLUSHDB(清空当前数据库)。
rename-command FLUSHALL "" 禁用FLUSHALL(清空所有数据库)。

3. 保护模式

表格

配置项 说明与推荐值
protected-mode 保护模式,默认yes(仅允许本地访问,除非配置了bind或requirepass),建议保持开启。

六、OpenEuler 系统级优化

1. 文件描述符限制

Redis 需要大量文件描述符,需调整系统限制:

  • 编辑/etc/security/limits.conf,添加:

    plaintext

    复制代码
    redis soft nofile 65535
    redis hard nofile 65535
  • 临时生效(重启后失效):ulimit -n 65535

2. 内存 Overcommit

避免 Redis 因内存不足被系统 OOM 杀死:

  • 编辑/etc/sysctl.conf,添加:

    plaintext

    复制代码
    vm.overcommit_memory = 1
  • 执行sysctl -p使配置生效。

3. 禁用透明大页(THP)

THP 会影响 Redis 性能,需禁用:

  • 临时禁用: plaintext

    复制代码
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
  • 永久禁用:在/etc/rc.local中添加上述命令,并赋予执行权限chmod +x /etc/rc.local。


七、配置生效与验证

  1. 修改配置后,重启 Redis 服务: bash

    复制代码
    systemctl restart redis
  2. 验证配置:使用redis-cli连接后,执行CONFIG GET 配置项名查看当前配置(如CONFIG GET maxmemory)。

相关推荐
饺子大魔王的男人1 天前
Redis 内存和连接异常怎么排查?用 redis_exporter 搭一套可远程抓取的监控链路
数据库·redis·bootstrap
夕除1 天前
redis--RDB AOF
数据库·redis·缓存
夕除1 天前
redis--UV
redis
ShineWinsu1 天前
对于Redis:Redis的认识以及分布式系统的解析
linux·数据库·c++·redis·缓存·消息队列·分布式架构
Wang's Blog1 天前
Java 项目实战: 外卖平台优化-使用Redis作为缓存产品与TTL配置
java·redis·缓存
一只旭宝1 天前
【C++复习】四种类型转换 + 常见设计模式 + Redis/MySQL(后端面试复习完整版)
c++·redis·笔记·mysql·设计模式
ShineWinsu1 天前
对于Redis:Redis特性以及应用场景的解析
linux·c++·redis·缓存·高并发·分布式系统·key-value
羑悻的小杀马特1 天前
Docker高阶实战:从Redis集群到C++微服务,全面解析镜像优化与生产环境部署+镜像制作常见问题详解
c++·redis·docker·镜像制作·dockefile
程序猿乐锅2 天前
【黑马点评 | 第八篇】Redisson分布式锁
java·数据库·spring boot·redis·分布式·spring·缓存
阿狗童鞋2 天前
Redis实战指南
数据库·redis·缓存