Redis简介
我是本际云服务器推荐网的小编,今天要为大家介绍一下Redis。Redis是一个开源的基于Key-Value的数据库,支持多种数据类型及操作,并提供多种语言API。与Memcached类似,数据存储在内存中,但Redis更进一步提高效率,通过周期性将数据更新写入磁盘或追加记录文件,实现了数据持久化。此外,Redis也支持各种排序方式,实现了master-slave同步,保证其高可用性。

Redis过期Key未删除故障处理
这里我们要为大家介绍一起关于Redis过期Key未删除故障处理的例子。
某业务系统采用RedisCluster架构,数据采用string类型设置过期时间Key。在Redis集群中查找该Key存在产生数据错误的故障。
RedisCluster由多个Redis实例组成,推荐使用3主3从的6台主机实例。RedisCluster把所有数据划分为16384个槽位,不同的Redis实例存储不同的Redis数据,实例之间可以进行数据迁移。对于客户端,RedisCluster可以根据Key路由到对应的节点。
对提供的部分Key在集群中查看状态为未删除,通过对Redis集群状态检查、槽数量、epoch等检查,Redis集群状态正常。再对主机Linux层进行检查,发现内存存在异常,主要在swap层。数据量增长导致内存和swap增长,部分数据进入swap后导致部分Key过期后未删除。
解决过程
针对此问题,解决方法有几种:
- 扩容内存使数据不占用swap并重启Redis集群。
- 关闭Redis本身的持久化,避免持久化过程中占用内存并占用swap。
- 扩容节点及增加主机、增加主节点来分散数据使单个节点内存占用量减少。
根据资源情况及数据重要性,决定采取第一种方法,扩容内存6台主机从48G扩容到64G。扩容后配合业务进行几天观察,swap得到有效控制,且业务未再出现过期Key未删除的情况。
总结
从此次故障处理过程中,我们可以总结出以下几点经验:
- Redis如果占用了swap,会导致各种问题,建议在搭建环境时尽量调整内存大小,并安装Linux系统时关闭swap。
- 由于该Redis开启持久化,在持久化过程中会占用内存,因此建议在开启持久化的时候主机内存大小是Redis maxmemory大小的2倍以上。
- Redis集群建议使用多主机多节点,单节点内存不超过Maxmemory的20G。
以上是本次Redis过期Key未删除故障处理的完整解决过程,希望对各位读者有所启发。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5879.html
