将2个缓存条目合并为一个

时间:2019-04-16 20:50:21

标签: django caching redis

有些发票正在缓存,但有2个缓存条目。如果发票的缓存存在或不存在,则保留第一个缓存条目。我为什么要这么做?因为有一个业务逻辑(get_cache_timeout方法)告诉我何时更新包含实际发票明细的第二个缓存条目。 因此,第一个是我了解第二个缓存条目是否存在的标志。如果没有,我将调用后端系统并更新第一个和第二个缓存条目。

拥有第二个缓存密钥并保留60天的原因是,在最坏的情况下,如果第一个条目不存在,然后调用后端系统失败,我仍然想返回第二个缓存条目作为响应,而不是显示错误。

cache.set(f'{invoices}_cache_exists', True, get_cache_timeout())
cache.set(f'{invoices}_cache', some_cache, 60*60*24*60)

很抱歉造成混乱的解释,但希望您能从此解决方案中得到灵感。

因此,最后我的问题是,对于这个问题,我如何才能摆脱第一个缓存条目,而只有第二个缓存条目具有2个超时?第一个告诉我何时更新,第二个告诉我删除缓存。

1 个答案:

答案 0 :(得分:0)

那呢?

#cache.set(f'{invoices}_cache_exists', True, get_cache_timeout())
cache.set(f'{invoices}_cache', some_cache, get_cache_timeout())

您可以使您的缓存在get_cache_timeout()时间内过期。

最后,如果高速缓存条目过期,则需要对其进行更新,这样就可以解决when to update

好吧,when to remove订单上的订单每隔get_cache_timeout()秒/分钟就会被删除。

只有TTL为M分钟的缓存条目必须每m分钟进行一次更新,其中M> n

相关问题