在 Akamai 中,当过期时间已过 90% 时,我们可以命令从源重新加载内容。在这种情况下,Akamai 正在提供缓存的内容,但正在访问源以重新加载新内容。
Redis中有类似的功能吗?
例如,我将一个内容在缓存中放置了 5 个小时。但如果有人在仅剩 30 分钟或更短的时间内访问此内容,我想重新加载它。如果用户在此期间访问它,我将提供缓存的内容,但在后台我们将重新加载新内容。
是否可以?
谢谢。
Redis 本身并不是一个获取数据的主动组件,而是一个数据存储。它保留您的数据,根据密钥的 TTL 使它们过期/逐出。
您/您的应用程序负责使用您想要存储的数据填充 Redis。
但是,您可以使用 Redis 原语来实现满足您的要求所需的部分功能:
密钥空间通知发布有关某些事件(例如密钥创建或过期)的通知。您可以在 Redis 中存储两个密钥,一个密钥代表具有适当 TTL 的负载,另一个密钥是具有稍短 TTL 的标记(例如原始 TTL 的 90%)。
一旦虚拟密钥过期,您就会捕获该通知。然后你就可以获取你想要更新的缓存内容了。您更新缓存密钥并为下一次缓存更新迭代再次写入幻像密钥。
上面的步骤非常简短,但应该指导您找到可行的方法。