Redis 过期复制到从站

标签 redis redis-cluster

我有兴趣使用 Redis 在服务器端存储客户的 session 以进行授权。基本上,当客户登录时,哈希值将存储在 Redis 集群中,并将 key 返回给客户端。对于每个请求,客户端都会将 key 作为 header 传递,服务将检查哈希值是否仍然存在于 Redis 中,如果不存在,则会返回错误消息。该 key 将在 X 分钟后过期,导致使用该 key 的任何请求失败。然而,我一直在网上读到,有些人由于过期复制到从属设备的方式而遇到了问题。从机仅在收到来自主机的 del 命令时才会使键过期,因此如果在此命令之前在从机上执行“get”,则将返回该键的值。

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

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

最佳答案

A)不,不是真的 - 自 2014 年以来,即使从属设备尚未从复制流接收到 DEL,对过期 key 的 GET 也会在从属设备上返回“未找到”。突出的问题与 EXISTS 与 GET 不一致有关,这仅在您依赖 EXISTS 命令的输出时才重要。

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

关于Redis 过期复制到从站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62072143/

相关文章:

java - Lettuce 是否支持 Redis 集群中的管道操作?

Redis - 获取集群中的总数据集大小

python - 使用 Python 连接到 Redis 集群(在 Docker 中)

雷迪斯 : Multiple keys vs bigger value

redis - 使用 Redis 的分布式锁中的竞争条件

redis - 尝试将 : Changing . NET 标准库的依赖项解析为 NET Core - Microsoft.Extensions.Primitives

redis - 有没有办法关闭空闲的 redis-client 连接?

redis RESTORE 命令未按预期工作

python-3.x - Azure Kubernetes 上的 Redis 分片集群

redis - 为什么 Redis 客户端在 ClusterMode 中使用多个地址?