众所周知Redis是基于内存的数据库,其所有的数据都在内存中,而内存又是属于成本较高且容量有上限的硬件资源,因此需要时刻关注Redis内存的情况。特别是在生产环境,Redis内存占用过高会带来很多风险,甚至是灾难性的后果:
庞大的数据导致持久化时间冗长,期间大量消耗主机资源,服务器压力陡升
Redis启动过程变慢,主从全量同步耗时增加,需要较长时间才能达到可用状态
一旦达到Redis内存上限,轻则无法写入数据,重则直接宕机,且宕机后无法立即恢复,除非丢弃所有数据。
为了避免这种情况的发生,需要增加Redis内存数据分布的监控,如果发现内存异常持续升高,可以通过监控来排查是谁占用了内存并及时处理。特来电云平台为此做了两种监控方案:
内存数据分布准实时监控
数据写入流量实时监控
一、内存数据分布准实时监控
Redis为了避免进程退出导致内存数据的永久丢失,可以定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。Redis持久化分为RDB持久化和AOF持久化:
RDB(Redis DataBase)持久化:将当前内存中的Redis完整数据保存到硬盘
AOF(Appe