redis的key什么时候失效

worktile 其他 18

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Redis的key在什么情况下会失效?

    Redis的key可以通过设置过期时间来使其在一定时间后自动失效。在Redis中,key的失效可以有两种方式:

    1. 设置过期时间:通过设置key的过期时间(Expiration),让key在达到过期时间之后自动被删除。可以使用EXPIRE命令来设置key的过期时间,例如:

      EXPIRE key_name seconds
      

      其中,key_name是要设置过期时间的key,seconds是过期时间(单位为秒)。

    2. 使用带有过期时间的数据结构:在使用Redis的数据结构时,可以选择存储带有过期时间的数据结构,例如使用SETEX命令将带有过期时间的值存储到key中,例如:

      SETEX key_name seconds value
      

      其中,key_name是要存储带有过期时间的key,seconds是过期时间,value是要存储的值。

    除了以上两种方式外,还可以使用TTL命令来查看key的剩余存活时间,即距离过期还有多长时间。

    需要注意的是,一旦key失效后,对该key的操作将返回空值。同时,在Redis中,失效的key不会立即从内存中删除,而是等待下一次访问时才会进行删除操作。

    总结起来,Redis的key在设置了过期时间后会在达到过期时间之后自动失效,也可以使用带有过期时间的数据结构来存储数据。

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

    Redis的key可以通过设置过期时间来使其在一定时间后自动失效。有三种情况下Redis的key会失效:

    1. Key到达过期时间:当设置了过期时间后,当当前时间超过key的过期时间时,key会自动失效,被Redis删除。

    2. Key被主动删除:当用户通过DEL命令或者UNLINK命令手动删除key时,key会立即失效。

    3. Key被替换:当用户执行SET命令或者其他写操作命令,将一个存在的key进行覆盖写操作时,原来的key会被新的key替换,并且失效。

    4. Key被内存淘汰:当Redis的内存空间不够时,会根据一定的算法来选择一些已经过期的或者使用频率较低的key进行淘汰,以释放内存空间。

    5. Redis重启:当Redis服务重新启动时,所有的key都会被清空,即使设置了过期时间,也会失效。

    需要注意的是,Redis的过期时间是以秒为单位进行设置的,可以通过EXPIRE命令或者SET命令的EX参数来设置过期时间。过期时间可以是一个整数值,也可以是一个时间戳。同时,Redis也提供了命令来获取key的剩余过期时间,可以通过TTL命令或者PTTL命令来获取。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Redis的key有多种方式可以设置失效时间,失效时间可以通过以下几种方式设置:

    1. 使用EXPIRE命令:EXPIRE命令可以为指定的key设置一个指定的过期时间,单位为秒。例如,可以通过以下命令为key设置过期时间为10秒:
    EXPIRE key 10
    

    在设置了过期时间后,当key过期时,该key将会被自动删除。

    1. 使用PEXPIRE命令:PEXPIRE命令与EXPIRE命令相似,可以为指定的key设置过期时间,但时间单位为毫秒。例如,可以通过以下命令为key设置过期时间为500毫秒:
    PEXPIRE key 500
    

    同样,当key过期时,该key将会被自动删除。

    1. 使用TTL命令:TTL命令可以查询指定key的剩余过期时间。例如,可以通过以下命令查询key1的剩余过期时间:
    TTL key1
    

    如果返回-2,则说明指定的key不存在;如果返回-1,则说明指定的key存在,但没有设置过期时间;如果返回大于0的数值,则说明指定的key存在,并且还有剩余过期时间。

    1. 使用PERSIST命令:PERSIST命令可以移除指定key的过期时间,使其成为永久有效的。例如,可以通过以下命令将key1设置为永久有效:
    PERSIST key1
    

    在执行PERSIST命令后,key1将不再具有过期时间,保持永久有效。

    1. 使用SET命令结合EX命令:SET命令可以设置key的值,并且可以指定EX参数来同时设置过期时间,单位为秒。例如,可以通过以下命令设置key2的值为value,并且设置过期时间为60秒:
    SET key2 value EX 60
    

    在执行SET命令时,可以同时指定EX参数来设置过期时间。

    1. 使用SET命令结合PX命令:SET命令还可以使用PX参数来设置过期时间,单位为毫秒。例如,可以通过以下命令设置key3的值为value,并且设置过期时间为300毫秒:
    SET key3 value PX 300
    

    需要注意的是,如果对一个已经设置了过期时间的key执行SET命令或者SET命令结合EXPIRE/PEXPIRE命令,之前设置的过期时间会被覆盖。而如果对一个未设置过期时间的key执行EXPIRE/PEXPIRE命令,那么该key会被设置过期时间。

    在Redis中,keys会在以下几个情况下失效:

    1. 当key的过期时间到期后,Redis会自动将其删除。
    2. 当对一个key执行了DEL命令,在该命令执行后,key会立即被删除。
    3. 当对一个key执行了SET命令,并且设置了过期时间,当过期时间到期后,key会被删除。
    4. 当对一个key执行了EXPIRE/PEXPIRE命令设置过期时间,当过期时间到期后,key会被删除。
    5. 当对一个key执行了PERSIST命令,该key之前设置的过期时间会被移除,key变为永久有效。
    6. 当Redis执行内存管理操作时,如果需要释放内存,可能会删除一些过期的key。

    需要注意的是,如果一个key被设置了过期时间,但在过期之前被取出或者修改了值,那么该key的过期时间会被重新计算。因此,在使用Redis时,需要根据具体需求合理设置key的过期时间。

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

400-800-1024

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

分享本页
返回顶部