门户网站 营销,建站教程新手怎么做网站php,网站备案对网站负责人的要求,建立网站数据库如果问到#xff1a;假如Redis的key过期之后#xff0c;会立即删除吗#xff1f; 其实就是想问数据删除(过期)策略。
如果面试官问到#xff1a;如果缓存过多#xff0c;内存是有限的#xff0c;内存被占满了怎么办#xff1f; 其实就是问#xff1a;数据的淘汰策略。…如果问到假如Redis的key过期之后会立即删除吗 其实就是想问数据删除(过期)策略。
如果面试官问到如果缓存过多内存是有限的内存被占满了怎么办 其实就是问数据的淘汰策略。
1.Redis的数据删除(过期)策略
当Redis的key过期后并不会立即删除。Redis使用以下两种策略来处理过期key的删除
(1)惰性删除
原理 当客户端尝试访问一个key时Redis会检查该key是否过期。如果过期则立即删除。优点 节省CPU资源只在访问时检查过期。缺点 如果过期key长时间未被访问会占用内存。
(2)定期删除
原理 Redis会定期随机抽取一部分key进行检查删除其中过期的key。优点 减少内存占用避免过期key长时间未被删除。缺点 可能会占用一定的CPU资源。
总结
Redis的过期key删除是惰性删除定期删除的结合。惰性删除确保访问时key是最新的定期删除减少内存占用。
2.Redis的数据淘汰策略
当Redis的内存被占满时会根据配置的淘汰策略删除部分key以释放空间。以下几种淘汰策略
(1)noeviction:
原理 当内存不足时新写入操作会报错不删除任何key适用场景 对数据一致性要求极高的场景。
(2)allkeys-lru:
原理 从所有key中删除 最近最少使用(Least Recently Used LRU)的key。适用场景适合大多数场景优先保留最近使用的key。
(3)volatile-lru:
原理 从设置了过期时间的key中删除 最近最少使用的key。适用场景 只淘汰过期key适合需要保留永久数据的场景。
(4)allkeys-random:
原理 从所有key中随机删除key。适用场景 适合key访问模式随机的场景。
(5)volatile-random:
原理 从设置了过期时间的key中随机删除key。适用场景 只淘汰过期key适合需要保留永久数据的场景。
(6)volatile-ttl:
原理 从设置了过期时间的key中删除剩余生存时间(TTL)最短的key。适用场景 优先淘汰即将过期的key。
总结
常用策略allkeys-lru 和volatile-lru是最常用的淘汰策略。
3.应用场景
3.1场景1:缓存系统
需求 优先保留最近使用的数据。策略 使用allkeys-lru
3.2场景2: 会话系统
需求 只淘汰过期回话数据。策略 使用volatile-lru和volatile-ttl
3.3随机访问模式
需求 数据访问模式随机。策略 使用allkeys-random
4.总结