gpt4 book ai didi

django - 使多个分组缓存键失效

转载 作者:行者123 更新时间:2023-12-04 15:43:16 25 4
gpt4 key购买 nike

我有型号 TicketType其中有大约 500 个实例。

它每周只更改几次。

但如果它发生变化,我需要使所有使用旧 TicketTypes 的缓存值无效。

不幸的是,一些缓存键不是固定的。它们包含计算数据。

我看到了这些解决方案:

使用 version参数并更新 TicketType 的保存后信号处理程序的版本值.

为基于 TicketType 的所有缓存键使用公共(public)前缀。
然后使保存后信号处理程序中的所有缓存键无效。

我想还有第三种更好的方法......

例子:

TicketType 是一棵树。 TicketTypes 的可见性与权限绑定(bind)。如果两个用户具有不同的权限,他们可能会以不同的方式查看树。我们根据权限缓存它。用户的权限被序列化和散列。缓存键是通过创建一个包含哈希和固定部分的字符串来创建的:

hash_key='ticket-type-tree--%s' % hashed_permissions

如果 TicketType 树发生变化,我们需要确保不会从缓存中加载旧数据。只要不使用旧数据,就不需要主动失效。

最佳答案

您可以将票证修改时间用作缓存键的一部分。

hash_key = 'ticket-type-tree--%s-%s' % (hashed_permissions, tree.lastmodified)

您可以添加 DateTimeFieldauto_now=True .如果从数据库获取修改时间太昂贵,您也可以缓存它。

通常,更新 post_save 中的缓存信号处理程序很好。除非您想始终拥有一致的数据并想为交易支付额外费用。

关于django - 使多个分组缓存键失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30100244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com