redis key过期返回什么

worktile 其他 260

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Redis是一个开源的内存数据结构存储系统,支持键值对存储。在Redis中,当一个键过期时,会产生一些特定的行为。

    首先,在Redis中,键的过期时间可以通过设置EXPIRE命令或在写入键值对时设置EXPIREAT命令来指定。一旦键的过期时间到达,它将会被标记为"过期"。

    当一个过期的键被访问时,Redis会根据不同的操作执行不同的行为。具体来说,有以下几种情况:

    1. 如果通过GET命令获取一个过期的键,Redis将返回nil。这表示该键不存在或已过期。

    2. 如果通过DEL命令删除一个过期的键,Redis将返回1。这表示成功删除了键。

    3. 如果通过TTL命令获取一个过期的键的剩余生存时间,Redis将返回-2。这表示键不存在或已过期。

    需要注意的是,Redis并不保证过期键的立即删除。相反,Redis使用一种被称为"Lazzy Expire"的策略来处理过期键。具体来说,当一个过期键被访问时,Redis会检查该键是否已过期。如果过期,则将键标记为"过期",并在一定的条件满足时,通过后台异步进程删除它。

    总结来说,当一个键过期时,Redis会根据具体的操作返回不同的值。在大多数情况下,过期键将被视为不存在或已过期,因此返回值将是nil-2

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

    当Redis中的key过期时,返回结果取决于具体的操作。下面是不同操作在key过期时的返回结果:

    1. GET:当使用GET命令获取一个已经过期的key时,返回值为nil(空值)。这是因为过期的key被Redis视为已经被删除。

    2. SET:当使用SET命令设置一个已经过期的key时,将会重新设置这个key,并更新它的过期时间。

    3. SETEX:当使用SETEX命令设置一个已经过期的key时,同样会重新设置这个key,并更新它的过期时间。

    4. EXISTS:当使用EXISTS命令判断一个已经过期的key是否存在时,返回值为0,表示该key不存在。

    5. TTL:当使用TTL命令获取一个已经过期的key的剩余生存时间时,返回值为-2。-2表示key不存在或已经过期。

    需要注意的是,当一个已经过期的key被更新或被判断存在时,Redis会重新设置它的过期时间。这是因为Redis是通过定时任务的方式来删除过期的key,并不能即时地发现和处理过期的key。因此,在过期时间之后,即使key还存在于Redis中,也被视为已过期,并且会被删除或者返回特定的值。

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

    在Redis中,当一个Key过期后,可以通过配置来决定其返回的行为。下面主要介绍一下在Redis中Key过期后的返回行为。

    Redis中Key的过期策略有两种:

    1. 惰性删除(Lazy deletion):在读取一个已经过期的Key时,Redis会立即删除它,并返回空值。
    2. 定时删除(Eager deletion):Redis会通过定时删除过期Key的任务来删除已过期的Key,并在读取过期的Key时返回空值。

    需要注意,在Redis中通过TTL(time to live)设置Key的过期时间,在Key过期后,并不会立即删除。相反,Redis采用以上两种策略进行删除。

    当一个Key被删除后,Redis在读取这个Key时会有以下几种返回行为:

    1. 返回null:如果使用Redis的GET命令读取一个已过期或被删除的Key时,Redis会返回nil(空值)。
    2. 返回空字符串:“”:在一些编程语言中,例如PHP,执行Redis的GET命令读取一个已过期或被删除的Key时,Redis会返回空字符串。
    3. 返回错误信息:有时,Redis也可能返回一个错误信息,例如"ERR No such key"。

    总结:
    当Redis中一个Key过期后,返回的行为取决于Redis的配置和读取Key的命令。一般情况下,Redis会返回nil或空字符串,告诉用户对应的Key已经过期或被删除。但也要注意,读取一个不存在的Key和读取一个已过期或被删除的Key是不同的,前者返回nil或空字符串,后者可能返回错误信息。

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

400-800-1024

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

分享本页
返回顶部