Redis的安装配置和日常维护那些事儿,聊聊部署中遇到的坑和经验
- 问答
- 2025-12-25 05:19:20
- 2
主要结合了我自己在工作中部署和维护Redis的实践,以及参考了《Redis设计与实现》这本书里提到的一些底层原理,还有Redis官方文档里关于持久化和内存管理的部分,我会尽量用大白话聊。
安装和最初配置:别急着启动
安装Redis其实特别简单,在Linux上,几条命令编译一下就行了,但坑往往不是出在安装,而是出在配置,很多人图省事,直接./redis-server就启动了,用的是默认配置,这在生产环境是绝对不行的。
第一个大坑就是默认绑定地址,Redis默认只绑定了127.0.0.1,意思是只有本机才能访问,如果你放在服务器上,其他机器想连,会发现根本连不上,你得去配置文件redis.conf里,找到bind这一行,把它改成服务器的内网IP,或者直接注释掉(有安全风险,不建议),我刚开始的时候就因为这个,折腾了半天网络,还以为防火墙问题。
第二个是设置密码,默认是没有密码的,这太危险了,相当于把大门敞开,一定要配置requirepass,设一个强密码,不然分分钟被人挖矿。
第三个是守护进程化,默认Redis不是后台运行的,你关掉终端,Redis服务就停了,要把daemonize改成yes,让它到后台去运行。
持久化配置:数据安全的重中之重
Redis的数据都在内存里,一断电就全没了,所以必须配置持久化,把数据存到硬盘上,Redis主要有两种方式:RDB和AOF。
RDB就像是给数据拍快照,在某个时间点,把整个数据库生成一个压缩过的文件,优点是文件小,恢复快,缺点是可能会丢数据,比如你设置5分钟拍一次快照,那么服务器如果在这5分钟内宕机,最近5分钟的数据就没了,配置RDB主要是设置拍快照的条件,比如save 900 1意思是900秒内至少有1个key被改动,就触发快照。

AOF更像是写日记,把每一个写命令都记录下来,这样即使服务器宕机,重启后把日记重新执行一遍,数据就能恢复,AOF的数据安全性高,最多丢一秒的数据(如果配置为每秒同步一次),缺点是日记文件会越来越大,恢复起来比RDB慢,所以通常要配置AOF重写机制,来压缩这个日记文件。
我遇到的坑是:一开始只用了RDB,结果有一次服务器意外重启,确实丢了几分钟的数据,虽然不多,但业务方很紧张,后来我们就改成了RDB和AOF同时开启,用AOF来保证数据安全,同时定期用RDB做一个冷备份,这样恢复的时候如果AOF文件坏了,还有个备选,这是官方文档里也推荐的混合持久化方式。
内存管理和淘汰策略:别让内存撑爆了
Redis是内存数据库,内存满了是最可怕的事情,默认情况下,内存满了之后,新的写请求会报错,这肯定不行,业务就瘫痪了。
所以必须设置内存淘汰策略,就是在内存不够用时,Redis怎么淘汰一些数据来腾地方,策略有好几种,

allkeys-lru:尝试淘汰最近最少使用的key(最常用的)。volatile-lru:只淘汰设置了过期时间的key中的最近最少使用的。allkeys-random:随机淘汰。
我一般用allkeys-lru,但这里有个经验:一定要提前预估好数据量,给Redis分配足够的内存,淘汰策略是兜底的,不能指望它常态工作,如果内存频繁触顶,淘汰机制会严重影响Redis的性能,我们有一次就是业务量增长过快,内存报警,虽然没撑爆,但响应速度明显变慢,就是因为Redis在不停地淘汰数据,这个操作本身很耗CPU。
日常维护的琐碎事
- 慢查询日志:Redis可以记录执行时间超过指定阈值的命令,一定要定期检查慢查询日志,看看有没有什么复杂的大key操作或者
keys *这种危险命令,这些是性能杀手。《Redis设计与实现》里也提到,单线程的Redis最怕这种耗时长的命令,它会阻塞所有其他请求。 - 监控:用
info命令可以看到Redis的各种状态信息,比如内存使用量、连接数、持久化状态等,最好接入监控系统,设置报警规则,比如内存使用率超过80%就报警。 - Keyspace通知:可以设置Redis在key过期或被删除时发送一个通知,对于一些需要做后续清理的业务场景很有用,但这个功能默认是关闭的,因为它会消耗少量CPU。
- 主从复制:为了高可用,一般会做主从,主节点负责写,从节点负责读和备份,配置不难,但要注意网络延迟,如果从节点延迟太高,读到的可能就是旧数据。
最大的一个坑:SWAP问题
这是我印象最深的一个坑,有一次Redis响应变得极慢,info命令看内存也没满,CPU也不高,但就是慢得像蜗牛,后来排查了很久,发现是操作系统把Redis部分内存数据换到SWAP(交换分区) 去了。
因为物理内存不够用了(可能被其他进程占用),Linux内核就把不常用的内存页挪到硬盘上的SWAP区,Redis的访问速度取决于内存,一旦发生SWAP,速度就会骤降,因为要去读硬盘了,解决方法就是:给服务器留出足够的空闲内存,或者直接禁用SWAP,同时监控系统不仅要监控Redis的内存,还要监控操作系统的内存和SWAP使用情况。
Redis用起来简单,但要把它在生产环境里稳住,需要关注的细节非常多,核心就是:配置别用默认的、持久化要配好、内存要管住、监控不能少。
本文由召安青于2025-12-25发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/67976.html
