Redis - 在过期之前重新加载内容

Gus*_*itt 1 redis

在 Akamai 中,当过期时间已过 90% 时,我们可以命令从源重新加载内容。在这种情况下,Akamai 正在提供缓存的内容,但正在访问源以重新加载新内容。

Redis中有类似的功能吗?

例如,我将一个内容在缓存中放置了 5 个小时。但如果有人在仅剩 30 分钟或更短的时间内访问此内容,我想重新加载它。如果用户在此期间访问它,我将提供缓存的内容,但在后台我们将重新加载新内容。

是否可以?

谢谢。

mp9*_*1de 5

Redis 本身并不是一个获取数据的主动组件,而是一个数据存储。它保留您的数据,根据密钥的 TTL 使它们过期/逐出。

您/您的应用程序负责使用您想要存储的数据填充 Redis。

但是,您可以使用 Redis 原语来实现满足您的要求所需的部分功能:

密钥空间通知发布有关某些事件(例如密钥创建或过期)的通知。您可以在 Redis 中存储两个密钥,一个密钥代表具有适当 TTL 的负载,另一个密钥是具有稍短 TTL 的标记(例如原始 TTL 的 90%)。

一旦虚拟密钥过期,您就会捕获该通知。然后你就可以获取你想要更新的缓存内容了。您更新缓存密钥并为下一次缓存更新迭代再次写入幻像密钥。

上面的步骤非常简短,但应该指导您找到可行的方法。