一、配置文件与基础配置
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。
七、配置生效与验证
-
修改配置后,重启 Redis 服务: bash
systemctl restart redis -
验证配置:使用
redis-cli连接后,执行CONFIG GET 配置项名查看当前配置(如CONFIG GET maxmemory)。
