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 10save 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(仅允许本地访问,除非配置了bindrequirepass),建议保持开启。

六、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)。

相关推荐
苏渡苇2 小时前
5 分钟跑起 Redis(Docker 版)
数据库·redis·缓存·docker·redis入门
Jul1en_3 小时前
【Redis】Zset类型、命令及应用场景
数据库·redis·缓存
亚空间仓鼠3 小时前
NoSQL数据库Redis(一):数据库基础
数据库·redis·nosql
一只游鱼4 小时前
langchain4j+redis+持久化存储记忆
java·redis·langchain4j
亚空间仓鼠5 小时前
NoSQL数据库Redis(三):主从复制
redis·bootstrap·nosql
weisian1516 小时前
Java并发编程--33-Redis分布式缓存三大核心架构:主从、哨兵、分片,落地实战与选型
java·redis·缓存·主从架构·哨兵架构·分片架构
亚空间仓鼠8 小时前
NoSQL数据库Redis(四):哨兵集群
redis·bootstrap·nosql
我不听你讲话8 小时前
Redis 配置与优化核心内容总结
数据库·redis·缓存
Wy_编程8 小时前
redis 客户端编程
数据库·redis·缓存