前言
本文主要讨论当一台redis机器已无法满足日常io的时候,搞了读写分离,而引发了的另一个redis的坑。
这是一篇吃瓜群众的笔记。
问题
前些时间发现多个业务反馈redis删除过期的key太慢了。严重占用内存,导致使用的内存超过redis的最大内存,有可能会导致业务报错或者key值丢失(主要看maxmemory-policy策略)。
原因
我们的redis基本都是读写分离的。而redis自带懒处理的机制(不去获取是不主动删除过期的key的)。
解决建议
1.把住哭也驾到从库的域名,主库也进行get操作,加快过期key的删除。
点评:主从分离就是想分担读与写的压力,如果主库也加入了读,存在会影响写的时候的效率以及主库总体的压力。
2.定制一个crontab的任务,在业务低谷期进行scan主库,redis会自动删除过期的key(scan的操作比较缓和,相当get读,scan也支持*星号匹配key name)
点评:相对取巧的操作。待验证。
如果你觉得有收获~可以关注我的公众号【咖啡色的羊驼】~第一时间收到我的分享和知识梳理~