分析&回答
如何设置过期时间?
为Key设置过期时间,expire key time(以秒为单位)。
定期删除
也叫主动删除:redis会定期主动淘汰一批已经过期的key。
- 当前已用的内存超过maxmemory限定时,触发主动清理策略。
- 如果redis的内存占用过多的时候,如果redis的内存占用过多的时候,会进行内存淘汰。
惰性删除
也叫被动删除:当读/写一个已经过期的key时,会直接删掉这个过期的key。
如果 Redis 内存不足会有那些策略
- noeviction:报错,当内存不足以容纳新写入数据时,新写入操作会报错
- allkeys-lru:在键空间中,移除最近最少使用的key
- allkeys-random:在键空间中,随机移除某个key
- volatile-lru:在设置了过期时间的键空间中,移除最近最少使用的key
- volatile-random:在设置了过期时间的键空间中,随机移除某个key
- volatile-ttl:在设置了过期时间的键空间中,有更早过期时间的key优先移除
如何选择
- 一般做缓存的话,使用allkeys-策略;
- 如果使用其持久化策略的话,volatile-策略。
- 最经常用的是allkeys-lru。
喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!