Redis 过期复制到从站

Redis expiration replication to slaves

我有兴趣使用 Redis 在服务器端存储客户的 session 以供授权。基本上,当客户登录时,哈希将存储在 Redis 集群中,并将密钥返回给客户。在每个请求中,客户端将密钥作为 header 传递,服务将检查散列是否仍然存在于 Redis 中,如果不存在,则将返回一条错误消息。该密钥将在 X 分钟后过期,导致使用该密钥的任何请求失败。但是,我一直在网上阅读到一些人因为过期复制到奴隶的方式而遇到问题。从站仅在收到来自主站的 del 命令时才使密钥过期,因此如果在此命令之前在从站上创建 "get",则将返回该密钥的值。

https://github.com/antirez/redis/issues/187

这个问题还存在吗?这对我来说似乎是个大问题,会造成一些安全漏洞。对于陈旧数据来说可能没什么大不了的,但是当用于授权时,这很重要

A) 不,不是真的——自 2014 年以来,过期密钥的 GET 将 return "not found" 在从属设备上,即使从属设备尚未从复制流中收到 DEL .突出的问题与 EXISTS 与 GET 不一致有关,这仅在您依赖 EXISTS 命令的输出时才重要。

B) 完全独立于此问题,复制滞后的可能性始终存在。您的应用程序的安全性不应依赖于副本始终是最新的前提。