Redis EXPIREAT是否会在GET上自动删除?

Redis EXPIREAT是否会在GET上自动删除?,redis,Redis,根据Redis Documentiton的说法,具有“与”完全相同的效果和语义 通过GET检索密钥时,EXPIRE会使其自身失效。EXPIREAT文档中没有提到类似的行为,但是EXPIREAT在检索密钥时不再过期是没有意义的 由于文档的模糊性,我无法说出在这种情况下,EXPIREAT的实际行为。在检索密钥时实际过期并不是唯一的方法 Redis密钥以两种方式过期:被动方式和主动方式 当某个客户端试图访问某个密钥时,该密钥就会被动地过期,并且发现该密钥已超时 当然,这还不够,因为有过期的密钥将永远

根据Redis Documentiton的说法,具有“与”完全相同的效果和语义

通过
GET
检索密钥时,EXPIRE会使其自身失效。
EXPIREAT
文档中没有提到类似的行为,但是
EXPIREAT
在检索密钥时不再过期是没有意义的


由于文档的模糊性,我无法说出在这种情况下,
EXPIREAT
的实际行为。

在检索密钥时实际过期并不是唯一的方法

Redis密钥以两种方式过期:被动方式和主动方式

  • 当某个客户端试图访问某个密钥时,该密钥就会被动地过期,并且发现该密钥已超时
  • 当然,这还不够,因为有过期的密钥将永远不会被访问。这些密钥无论如何都应该过期,因此Redis会定期在具有过期集的密钥中随机测试一些密钥。所有已过期的密钥都将从密钥空间中删除
谢谢你的提问

在Redis和评论部分有一个通用的expire函数

这是EXPIRE、PEXPIRE、EXPIREAT和PEXPIREAT的通用命令实现


“我乐观的猜测”是这些不同的expire(或*at)命令通过转换使用不同的参数调用此函数。因此,
EXPIREAT
命令也具有与
EXPIRE
相同的行为,并且密钥以相同的两种方式过期。

这真的很烦人-我认为这不是处理
EXPIREAT
的合乎逻辑的方式。使用
EXPIREAT
表示您实际上希望它在那个时候过期,而不管。。。不管怎样,谢谢你的回答事实上它并不影响expire行为@Alfie-expire和expire都是一样的,它们将在给定的秒数或时间戳之后终止。