redis设置失效时间都经历了什么

fiy 其他 38

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    当设置Redis中的键值对时,我们可以选择为其设置一个过期时间,也称为失效时间。下面是Redis键值对设置失效时间的流程:

    1. 设置键值对:首先,我们向Redis中设置键值对,其中键是一个字符串,值可以是字符串、哈希、列表、集合、有序集合等数据类型。

    2. 设置过期时间:在设置键值对的同时,我们可以通过使用EXPIRE命令为键设置一个过期时间。过期时间可以是一个具体的时间(以秒为单位)或者一个时间戳。

    3. 过期检查:Redis会以一定的频率检查键值对是否已经过期。这个频率由配置文件中的参数决定,默认情况下是每秒检查10次。

    4. 过期删除:当Redis发现一个键已经过期时,它会从内存中删除这个键值对。这个删除操作是延迟删除的,也就是说并不是立即删除,而是在某个条件触发时删除。

    5. 惰性删除:Redis不会在每个操作时都检查和删除过期的键值对,而是等到有需要访问键值对的操作时,再进行删除。这是因为过期键的删除操作是相对耗时的,频繁地检查和删除会影响性能。

    总结起来,Redis设置失效时间经历了键值对设置、过期时间设置、过期检查和惰性删除四个步骤。这种设计保证了Redis的高性能和高效率。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Redis是一个快速的内存数据库,它以键值对的形式存储数据。为了控制内存使用情况并提高查询效率,Redis提供了设置键的过期时间的功能。

    当设置了过期时间后,Redis会在键的过期时间到达后自动删除该键。在设置过期时间期间,Redis会根据一定的策略来检测键的过期情况,并执行相应的操作。

    Redis背景定期删除:
    Redis会以一定的时间间隔(默认是每秒执行一次)扫描一定数量的键,检查它们是否过期。如果发现有过期的键,就删除这些键,并释放相应的内存。

    Redis惰性删除:
    当客户端尝试通过GET命令获取某个键时,Redis会先检查该键是否过期。如果过期,Redis会立即删除该键;如果未过期,则继续返回键的值。

    Redis定时删除:
    Redis会为每个设置了过期时间的键创建一个定时器,在键的过期时间到达时被触发。一旦定时器触发,Redis会删除相应的键。

    Redis内存淘汰策略:
    当Redis的内存不足以容纳新写入的数据时,会触发内存淘汰策略。Redis提供了多种内存淘汰策略,如LRU(最近最少使用)、LFU(最近最少使用)等。根据选择的策略,Redis会删除一些键来为新数据腾出空间。

    Redis的过期时间是以秒为单位的,可以通过EXPIRE命令设置键的过期时间。在Redis中,可以设置两种类型的过期时间:基于绝对时间的过期时间和基于相对时间的过期时间。

    基于绝对时间的过期时间是指在指定的日期和时间点之后键变为过期。Redis使用Unix时间戳来表示绝对时间。

    基于相对时间的过期时间是指从当前时刻开始,经过指定的时间段后键变为过期。Redis使用秒作为相对时间的单位。

    总体来说,Redis通过背景定期删除、惰性删除、定时删除和内存淘汰策略来管理和控制键的过期时间。这些机制保证了Redis的高效性和可靠性。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Redis 是一个高性能的键值存储系统,主要用于缓存和数据存储。为了有效管理存储的数据,Redis 提供了设置失效时间的功能,当数据达到指定的时间后就会自动删除。

    Redis 设置失效时间的过程主要包括以下几个步骤:

    1. 定义数据和过期时间:
      在 Redis 中,可以使用 SET 命令设置键值对,并通过 EXPIRE 或者 PEXPIRE 命令设置键的过期时间,单位可以是秒或者毫秒。例如,以下命令会在键 "key1" 的值为 "value1" 的同时设置它的过期时间为 300 秒:
    SET key1 value1
    EXPIRE key1 300
    
    1. 定时检查过期键:
      Redis 内部有一个定时器,会反复检查过期的键。该定时器会以不同的策略和频率运行,例如每秒检查指定数量的键是否过期。

    2. 删除过期键:
      当 Redis 的定时器检测到某个键已经过期时,就会将该键从数据库中删除。

    3. 惰性删除和定期删除:
      Redis 采用了惰性删除和定期删除两种策略来删除过期键。

    • 惰性删除:当客户端访问某个键时,Redis 会检查该键是否过期,如果过期就会删除。这种策略是为了减少对内存的访问,但会导致过期键滞留在内存中,直到被访问时才会被删除。
    • 定期删除:Redis 运行一个定时任务,每隔一段时间就会扫描数据库,删除过期的键。
    1. 过期键的删除策略:
      Redis 使用了一种叫做「过期字典」的数据结构来管理过期键,它以字典为基础,每个键都有一个对应的时间戳,Redis 会按照过期时间的先后顺序删除键。同时,Redis 还会记录每次删除的键的数量,并通过一定的算法来决定删除的键的数量和频率,以保证删除不会过于频繁。

    总结:
    通过设置过期时间,Redis 可以自动删除过期的键。它通过定时检查和删除策略来管理过期键,并采用惰性删除和定期删除两种方式。这一机制可以帮助开发者更好地管理存储的数据,并提高系统的性能。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部