温馨提示×

centos缓存能持久化吗

小樊
41
2025-11-19 18:29:44
栏目: 智能运维

结论与总体思路 可以,但需要区分缓存类型:操作系统页面缓存、应用层内存缓存(如 PHP OPcache)、以及外部缓存(如 Redis/Memcached)。前两者默认仅在内存中,重启后会丢失;若要让其“持久化”,需落盘或改用具备落盘能力的存储。外部缓存中,Redis 原生支持持久化,Memcached 不支持持久化。

常见缓存类型与持久化方式

  • 操作系统页面缓存(Page Cache)
    • 默认是易失的;可通过将关键目录挂载为 tmpfs(内存文件系统)获得“非易失”的错觉,但这只是把数据放在内存中,掉电仍会丢失,并非真正持久化。
    • 若需真正持久化,应将数据写入磁盘并使用同步策略(如应用层 fsync、数据库事务日志等),而不是依赖 Page Cache。
  • PHP OPcache(字节码缓存)
    • 默认只在内存,重启 PHP-FPM/Apache 即失效;可通过配置 validate_timestamps=0 减少文件变动检查频率,但这只是避免频繁失效,并不把字节码落盘供重启后复用。
    • 若需重启后保留,需借助外部进程管理或预热脚本在进程启动时重新加载/编译脚本(本质上仍是“重建缓存”,而非“持久化缓存”)。
  • Redis(键值缓存/存储)
    • 原生支持两种持久化:
      • RDB:按时间间隔/变更次数生成快照(如 save 900 1、save 300 10、save 60 10000),恢复快、体积小,但可能丢最近一次快照之后的数据。
      • AOF:记录写命令,支持 appendfsync everysec(推荐,折中性能与安全性)、always(最安全最慢)、no(最快最不安全)。
    • 生产常用做法:同时开启 RDB+AOF,兼顾恢复速度与数据安全性,并做好 RDB/AOF 文件的定期备份。
  • Memcached
    • 纯内存缓存,设计上不提供持久化;重启或故障后数据全部丢失。若需要持久化,请改用 Redis 或将数据存入数据库/磁盘。

在 CentOS 上让 Redis 持久化的关键配置

  • 编辑配置文件(通常为 /etc/redis.conf):
    • RDB 快照:
      • save 900 1
      • save 300 10
      • save 60 10000
      • dbfilename dump.rdb
      • dir /var/lib/redis
    • AOF 日志:
      • appendonly yes
      • appendfilename “appendonly.aof”
      • appendfsync everysec
  • 启动与验证:
    • systemctl start redis && systemctl enable redis
    • redis-cli ping 返回 PONG 表示服务正常
  • 运维要点:
    • 建议同时启用 RDB+AOF;定期备份 dump.rdbappendonly.aof 到安全位置(异地/离线)。

选型建议

  • 仅需加速且可接受重启丢失:使用 OPcache(进程内)或 Memcached(进程外),不做持久化配置。
  • 需要重启后快速恢复或避免缓存击穿:使用 Redis 并开启 RDB+AOF,结合备份策略与监控告警。
  • 需要跨实例共享会话/限流计数等:使用 Redis 集群或主从复制,确保高可用与数据一致性。

0