redis key过期返回什么
-
Redis是一个开源的内存数据结构存储系统,支持键值对存储。在Redis中,当一个键过期时,会产生一些特定的行为。
首先,在Redis中,键的过期时间可以通过设置
EXPIRE命令或在写入键值对时设置EXPIREAT命令来指定。一旦键的过期时间到达,它将会被标记为"过期"。当一个过期的键被访问时,Redis会根据不同的操作执行不同的行为。具体来说,有以下几种情况:
-
如果通过
GET命令获取一个过期的键,Redis将返回nil。这表示该键不存在或已过期。 -
如果通过
DEL命令删除一个过期的键,Redis将返回1。这表示成功删除了键。 -
如果通过
TTL命令获取一个过期的键的剩余生存时间,Redis将返回-2。这表示键不存在或已过期。
需要注意的是,Redis并不保证过期键的立即删除。相反,Redis使用一种被称为"Lazzy Expire"的策略来处理过期键。具体来说,当一个过期键被访问时,Redis会检查该键是否已过期。如果过期,则将键标记为"过期",并在一定的条件满足时,通过后台异步进程删除它。
总结来说,当一个键过期时,Redis会根据具体的操作返回不同的值。在大多数情况下,过期键将被视为不存在或已过期,因此返回值将是
nil或-2。1年前 -
-
当Redis中的key过期时,返回结果取决于具体的操作。下面是不同操作在key过期时的返回结果:
-
GET:当使用GET命令获取一个已经过期的key时,返回值为nil(空值)。这是因为过期的key被Redis视为已经被删除。
-
SET:当使用SET命令设置一个已经过期的key时,将会重新设置这个key,并更新它的过期时间。
-
SETEX:当使用SETEX命令设置一个已经过期的key时,同样会重新设置这个key,并更新它的过期时间。
-
EXISTS:当使用EXISTS命令判断一个已经过期的key是否存在时,返回值为0,表示该key不存在。
-
TTL:当使用TTL命令获取一个已经过期的key的剩余生存时间时,返回值为-2。-2表示key不存在或已经过期。
需要注意的是,当一个已经过期的key被更新或被判断存在时,Redis会重新设置它的过期时间。这是因为Redis是通过定时任务的方式来删除过期的key,并不能即时地发现和处理过期的key。因此,在过期时间之后,即使key还存在于Redis中,也被视为已过期,并且会被删除或者返回特定的值。
1年前 -
-
在Redis中,当一个Key过期后,可以通过配置来决定其返回的行为。下面主要介绍一下在Redis中Key过期后的返回行为。
Redis中Key的过期策略有两种:
- 惰性删除(Lazy deletion):在读取一个已经过期的Key时,Redis会立即删除它,并返回空值。
- 定时删除(Eager deletion):Redis会通过定时删除过期Key的任务来删除已过期的Key,并在读取过期的Key时返回空值。
需要注意,在Redis中通过TTL(time to live)设置Key的过期时间,在Key过期后,并不会立即删除。相反,Redis采用以上两种策略进行删除。
当一个Key被删除后,Redis在读取这个Key时会有以下几种返回行为:
- 返回null:如果使用Redis的GET命令读取一个已过期或被删除的Key时,Redis会返回nil(空值)。
- 返回空字符串:“”:在一些编程语言中,例如PHP,执行Redis的GET命令读取一个已过期或被删除的Key时,Redis会返回空字符串。
- 返回错误信息:有时,Redis也可能返回一个错误信息,例如"ERR No such key"。
总结:
当Redis中一个Key过期后,返回的行为取决于Redis的配置和读取Key的命令。一般情况下,Redis会返回nil或空字符串,告诉用户对应的Key已经过期或被删除。但也要注意,读取一个不存在的Key和读取一个已过期或被删除的Key是不同的,前者返回nil或空字符串,后者可能返回错误信息。1年前