有些发票正在缓存,但有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个超时?第一个告诉我何时更新,第二个告诉我删除缓存。
答案 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