属于大家的
VPS知识分享站

云服务器 Redis 配置:内存、持久化与备份

先说结论:Redis 是内存型服务,配置核心不是 CPU 核数,而是内存够不够、留没留余量、持久化会不会拖慢主线程。2 核 4G 能跑小站缓存,4 核 8G 适合中型业务,数据量超过内存的 60% 就该考虑分片或加机器。

先算三笔账:

  • 数据集大小:所有 key 加起来的实际内存
  • 额外开销:连接、复制缓冲、碎片、AOF 缓冲
  • 余量:至少留 30%,给 fork 和突发写入

内存怎么算

用 INFO memory 看 used_memory 和 used_memory_rss,两者差距大说明碎片多。数据集 2G 时,建议机器内存 4G 以上;数据集 5G 时,8G 起,别让 Redis 把系统内存吃满。

redis-cli INFO memory
redis-cli INFO stats
redis-cli --bigkeys
内存预算被分成数据集、开销和碎片三块
数据集只占一部分,连接、复制、碎片和 fork 都要留余量。

maxmemory 和淘汰策略

maxmemory 3gb
maxmemory-policy allkeys-lru

一定要设 maxmemory,否则 Redis 会一直涨到 OOM。缓存场景用 allkeys-lru 或 allkeys-lfu;队列/持久数据不要用会淘汰的策略。设了上限后,写入超限会报错或淘汰,业务要能处理。

持久化怎么选

RDB:定时快照,恢复快、文件小,但可能丢最后一次快照后的数据。AOF:追加日志,丢数据少,但文件大、写入有开销。可以两者都开,或按业务选。

save 900 1
save 300 10
appendonly yes
appendfsync everysec

appendfsync always 最安全但最慢,everysec 是常用折中。fork 做 RDB 时会占内存,数据集大时要注意 COW 带来的内存峰值。

RDB 快照与 AOF 日志两条写入磁盘的路径
RDB 恢复快但可能丢数据,AOF 丢得少但有写入开销。

主从和哨兵

单机挂了就没了,生产建议主从 + 哨兵,或直接用云 Redis。主从异步复制,切换可能丢少量数据;哨兵负责选主,客户端要支持哨兵地址。数据量大到单机放不下,再考虑 Cluster 分片。

配置示例

bind 127.0.0.1
protected-mode yes
requirepass 换成强密码
maxmemory 3gb
maxmemory-policy allkeys-lru
appendonly yes
appendfsync everysec
tcp-keepalive 300

不要裸奔在公网:绑内网、设密码、安全组只放应用服务器。Redis 未授权访问是最常见的入侵入口之一。

备份和恢复

  • RDB 文件定期复制到站外
  • AOF 文件和 RDB 一起备份
  • 恢复前确认版本兼容
  • 定期演练恢复
redis-cli BGSAVE
# 复制 dump.rdb 到备份目录
Redis 备份库与快照文件、恢复护盾
RDB 和 AOF 一起备份,恢复演练比备份本身更重要。

常见坑

  • 大 key:一个 key 几 MB,删除和迁移都会卡
  • 热 key:单个 key 打满一个核
  • 内存碎片:RSS 远大于 used_memory
  • fork 阻塞:数据集大时 RDB 卡顿
  • 公网暴露:未授权访问被挖矿

和 MySQL 抢内存

同机部署时,Redis 和 MySQL 会互相抢内存。MySQL 的 buffer pool 和 Redis 的 maxmemory 要一起算,给系统留至少 1G。内存不够时,MySQL 先抖动,Redis 再被 OOM。

连接数和客户端

每个连接都占内存,短连接频繁创建销毁还会增加开销。应用侧用连接池,设置最大连接数和空闲回收;服务端 maxclients 按内存和并发设,别用默认值硬扛。

监控指标

看 used_memory、used_memory_rss、碎片率、命中率、evicted_keys、blocked_clients、主从延迟。命中率突然下降,先查 key 是否过期或缓存穿透;evicted 持续增长,说明内存不够。

云 Redis 的限制

云 Redis 省运维,但连接数、带宽、命令限制和版本可能受产品约束。买之前确认是否支持你要的命令、能否改 maxmemory-policy、备份保留多久。

大 key 和热 key

大 key 删除、迁移、序列化都会卡主线程;热 key 会把单个分片打满。用 --bigkeys 和 --hotkeys 定期检查,把大 hash/list 拆小,热 key 加本地缓存或做多副本。

扩容和迁移

单机内存不够时,先清理过期 key、优化结构,再考虑升配或分片。迁移用主从复制或 redis-shake,迁完校验 key 数量和关键数据,再切流量。

安全别裸奔

Redis 未授权访问是最常见的入侵入口。绑内网、设强密码、安全组只放应用服务器,禁用或重命名危险命令。云 Redis 用白名单和账号体系,别把 6379 开到公网。

备份文件也要权限控制,dump.rdb 里可能有业务数据;备份传输走内网或加密通道。

最后,Redis 的配置要随数据量增长定期复核,别让半年前的内存预算一直跑到今天。

内存、持久化、主从、备份四件事做好,Redis 就很省心。

配置不是一劳永逸,按季度复核一次配置。

常见问题 FAQ

Q1:2 核 4G 能跑 Redis 吗?

能跑小站缓存,数据量控制在 1G 到 1.5G,留足余量。数据再大就上 8G 或分片。

Q2:Redis 需要独立服务器吗?

数据重要、QPS 高时建议独立,别和 MySQL、应用抢内存。小站可以同机,但要设 maxmemory。

Q3:RDB 和 AOF 选哪个?

能接受丢几分钟数据用 RDB;不能接受就开 AOF everysec,或两者都开。

Q4:内存一直涨怎么办?

看是否没设 maxmemory、是否有大 key、是否碎片多。先 --bigkeys 和 INFO memory,再决定清理或扩容。

Q5:云 Redis 和自建怎么选?

不想运维、要自动主从和备份,选云 Redis;要可控成本、自定义配置,自建更灵活。

总结

Redis 选配置先算内存,留 30% 余量,设 maxmemory 和淘汰策略;持久化按能丢多少数据选 RDB/AOF;生产做主从和备份,别裸奔公网。

需要一台独立缓存机器做测试,可以按小时开一台萤光云香港 CN2 VPS,先用真实数据跑一轮。

相关推荐

赞(0)
未经允许不得转载:VPS知识分享站 » 云服务器 Redis 配置:内存、持久化与备份