redis过期策略和淘汰策略的区别
时间: 2023-09-12 22:09:45 浏览: 69
Redis中的过期策略和淘汰策略是两个不同的概念。
过期策略指的是当Redis中的某个key过期时,Redis会如何处理这个key。Redis中有两种过期策略:
1. 定时过期:Redis会将过期的key放入一个独立的字典中,并在每次执行命令时,对字典中的一部分key进行检查并删除已过期的key。
2. 惰性过期:当某个key被访问时,Redis会检查这个key是否过期,如果过期则立即删除。
淘汰策略指的是当Redis中的内存不足时,Redis会如何淘汰一些key来腾出内存。Redis中有五种淘汰策略:
1. noeviction:不淘汰,直接返回错误。
2. allkeys-lru:从所有key中,选择最近最少使用的key淘汰。
3. volatile-lru:从设置了过期时间的key中,选择最近最少使用的key淘汰。
4. allkeys-random:从所有key中,随机选择一些key淘汰。
5. volatile-random:从设置了过期时间的key中,随机选择一些key淘汰。
总体来说,过期策略和淘汰策略都是为了提高Redis的内存利用率和性能,但是它们的目的和处理方式不同。
相关问题
redis的过期策略、内存淘汰策略
Redis的过期策略和内存淘汰策略是两个不同的概念。
1. 过期策略
Redis中的过期策略是指当一个键过期后,Redis如何处理它。Redis中有两种过期策略:
- 定时删除:当一个键过期时,Redis不会立即删除它,而是将它加入到一个专门的过期键列表中。Redis会以一定的频率遍历这个过期键列表,将过期的键删除。
- 惰性删除:当一个键过期时,Redis不会立即删除它,而是在客户端访问这个键时再检查它是否过期,如果过期了就删除它。
默认情况下,Redis使用的是惰性删除策略。
2. 内存淘汰策略
Redis中的内存淘汰策略是指当Redis的内存达到一定的限制时,Redis如何选择要删除的键。Redis中有多种内存淘汰策略:
- noeviction:当内存达到限制时,Redis会直接返回错误,不允许再写入新键。
- allkeys-lru:当内存达到限制时,Redis会选择最近最少使用的键删除。
- allkeys-random:当内存达到限制时,Redis会随机选择一个键删除。
- volatile-lru:当内存达到限制时,Redis会选择过期时间最近的最少使用的键删除。
- volatile-random:当内存达到限制时,Redis会随机选择一个过期时间最近的键删除。
默认情况下,Redis使用的是noeviction策略,即当内存达到限制时,Redis会直接返回错误。
redis 过期策略 知识体系
Redis 过期策略是控制 Redis key 生命周期的重要手段,以下是 Redis 过期策略的知识体系:
1. 过期时间:过期时间是指 Redis key 存在的时间,可以通过 EXPIRE 命令和 PEXPIRE 命令来设置。EXPIRE 命令设置的过期时间是一个固定的时间,而 PEXPIRE 命令设置的过期时间是一个相对时间,即从当前时间开始计算。
2. 过期删除:过期删除是指 Redis 在 key 过期后自动删除 key 的机制。Redis 提供了惰性过期和定期删除两种过期删除策略。
3. 惰性过期:惰性过期是指 Redis 在访问 key 时检查 key 是否过期,如果过期则删除 key。这种策略可以减少 Redis 的负载,但可能会导致过期 key 的数量增多,占用更多的内存空间。
4. 定期删除:定期删除是指 Redis 在每隔一段时间扫描整个数据库,删除过期的 key。这种策略可以减少过期 key 的数量,但可能会导致 Redis 的性能下降。
5. 淘汰策略:当 Redis 内存空间不足时,会触发淘汰策略,即删除一些不常用或者过期的 key,来腾出更多的空间。Redis 提供了多种淘汰策略,例如 LRU(最近最少使用)、LFU(最不经常使用)等。
总之,Redis 过期策略是控制 Redis key 生命周期的重要手段,可以通过过期时间、过期删除、淘汰策略等方式来控制 Redis 中 key 的存储和释放。在面试中,还需要掌握 Redis 过期策略的原理、机制、优缺点、调优等方面的知识。