redis设置过期后会怎么样
-
Redis是一种内存数据库,可以用于缓存、持久化、消息队列等多种用途。当使用Redis设置key的过期时间后,如果达到过期时间,Redis会对这个key进行特定处理。下面我将具体介绍Redis设置过期后会发生的几种情况:
-
过期后key变为无效:当Redis中的某个key设定了过期时间后,当系统时间达到过期时间时,Redis会将该key的状态从有效状态变为无效状态。此时,对这个key的读写操作将返回空值或错误信息。
-
被动删除:Redis的过期键是惰性删除的,也就是说它并不是在过期时立即删除,而是等待下次被访问时进行删除操作。这种方式可以减少Redis的CPU占用率,提高整体性能。
-
主动删除:当Redis收到对某个key的读写请求时,会先判断这个key是否已过期,如果过期则立即删除并返回空值或错误信息。这种方式可以确保及时释放内存空间,避免内存溢出。
-
过期key的删除策略:Redis支持多种过期键的删除策略,如定期删除、惰性删除和淘汰算法。定期删除是指Redis每隔一段时间(由
hz配置项决定)遍历数据库,删除所有已过期的key。惰性删除是指在访问某个key时,判断其是否过期并删除。淘汰算法是指当Redis的内存空间不足时,会根据一定的算法删除最近最少使用的key。 -
限制过期键的数量:Redis可以通过配置项
maxmemory来限制数据库的最大内存队列大小,当内存队列满时,可以使用一定的淘汰策略来删除过期的key,以确保内存使用的合理性。
总之,Redis设置过期后,会根据一定的策略进行删除操作,并释放相应的内存空间。这样可以有效地管理内存,提高Redis的性能和可靠性。
1年前 -
-
当Redis中的某个键值设置了过期时间后,一旦过期时间到了,该键值将会被自动删除。以下是设置过期后Redis会发生的几个情况:
-
键值被删除:一旦过期时间到了,Redis会自动将键值从数据库中删除。这意味着无法再通过查询获取到该键对应的值。
-
内存回收:删除过期键值后,Redis会将该键值占用的内存重新释放。这样可以避免内存的浪费,提高Redis服务器的性能。
-
触发事件:如果对过期键值设置了事件通知功能,当键值过期被删除时,Redis会触发相应的事件通知。可以通过订阅相应的频道或使用钩子函数来监听这些事件,以便进行其他操作。
-
延迟删除:Redis在删除过期键值时,并不是立即将其从数据库中删除,而是采用惰性策略。即在键值被访问时,进行过期检查和删除操作。这样可以减少删除操作对性能的影响。
-
惰性删除策略:Redis使用惰性策略来删除过期键值,即不在设置过期键值时立即删除,而是在键值被访问时检查其是否过期,并在有需要时进行删除。这样可以避免在设置大量过期键值时对性能产生过大的影响。
总之,设置过期后Redis会自动删除过期的键值,并释放相应的内存。这个特性可以用来管理缓存、会话等需要有限生命周期的数据。同时,通过事件通知机制和惰性删除策略,Redis能够灵活地进行过期键值的管理,并提高服务器的性能。
1年前 -
-
Redis是一个基于内存的高性能键值存储系统,对于键的管理可以设置过期时间。当键过期时,Redis会自动将其删除。
Redis的键过期有两种方式:定时删除和惰性删除。
-
定时删除:
Redis使用一个字典结构来存储所有的键值对,字典中的每个键都有一个毫秒精度的过期时间字段(expires field)。当一个键设置了过期时间后,Redis会使用一个定时器任务(timer task)来检查这个键是否超过了过期时间。定时器任务会周期性地遍历字典中的键,将过期的键删除。定时删除的优点是:对于定时器扫描的任务量是均摊到时间上的,这样可以保证删除过期键的操作分散在时间轴上,避免了一次性删除大量键的卡顿问题。
-
惰性删除:
惰性删除是指在访问一个键时,Redis会先检查这个键是否过期,如果过期则会删除它并返回null。惰性删除的优点是:可以在键过期之后的任意时间内进行访问,Redis会根据实际访问情况来删除过期键,避免了定时删除的浪费。
另外,当键被设置了过期时间时,Redis会对键设置一个逐出策略。逐出策略用于在内存不足时,决定哪些键会被优先删除。目前Redis有6种逐出策略,包括:volatile-lru(最近最少使用),volatile-ttl(过期时间最短),volatile-random(随机选择),allkeys-lru(最近最少使用),allkeys-random(随机选择)和no-eviction(不删除)。当内存不足时,Redis会根据逐出策略来删除键。
总结:
当Redis中的键设置了过期时间后,Redis会根据定时删除和惰性删除两种方式来删除过期键。定时删除是通过定时器任务来删除过期键,而惰性删除是在访问一个键时检查它是否过期,并在需要的时候删除。此外,Redis还根据逐出策略来决定删除键的优先级。1年前 -