在Akamai中,我们可以命令在消耗了90%的到期时间时从原点重新加载内容。在这种情况下,Akamai正在提供缓存内容,但正在访问原始内容以重新加载新内容。
Redis中是否有类似的功能?
例如,我将内容放入缓存中5个小时。但是如果有人在30分钟或更短时间内访问此内容,我想重新加载它。如果用户在此期间访问它,我将提供缓存的内容,但在后台我们将重新加载新内容。
有可能吗?
感谢。
答案 0 :(得分:2)
Redis不是关于获取数据本身的活动组件,而是数据存储。它可以保存您的数据,根据TTL过期/驱逐密钥。
您/您的应用程序负责使用您要保存的数据填充Redis。
但是,您可以使用Redis原语来实现满足您的需求所需的一部分:
Keyspace通知会针对某些事件发布通知,例如密钥创建或到期。您可以在Redis中存储两个键,一个代表您的有效负载的键和适当的TTL以及一个幻象键,它是一个TTL稍短的标记(比如原始TTL的90%)。
幻像键一到,您就会捕获该通知。然后,您可以获取要更新的缓存的内容。您更新缓存密钥并再次编写幻像密钥以进行下一次缓存更新迭代。
上述步骤非常简略,但应引导您采用可行的方法。