我有一个 Django 应用程序,可以获取近乎实时的数据(推文和投票),尽管更新平均每分钟或两分钟发生一次。但是,我们希望通过在数据出现时立即更新站点和 api 结果来显示数据。
我们可能会在这个站点上看到大量的负载,所以我最初的想法当然是缓存!
让某种 Memcached 缓存被另一个进程或事件手动失效是否可行?换句话说,我会缓存 View 很长时间,然后有新的推文和投票使整个 View 无效。
我不担心仅使某些对象无效,并且我考虑将
MemcachedCache
子类化后端在 this strategy 之后添加一些功能.但当然,Django 的 session 也使用 Memcached 作为直写缓存,我不想让它无效。
最佳答案
缓存失效可能是处理您正在尝试做的事情的最佳方式。根据您问题的措辞,我将假设您的应用程序如下:
假设以上两件事都是真的,缓存失效肯定是要走的路。这是在 Django 中执行此操作的最佳方法:
这基本上就是Django signals是为了。它们将在您的对象被保存/更新后自动运行,这是使用最新信息更新您的缓存存储的好时机。
这样做意味着您永远不需要运行后台作业来定期扫描您的数据库并更新您的缓存——您的缓存将始终与最新数据即时保持同步。
关于django - 实用(Django)缓存策略和实现?缓存长,数据更改时缓存无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7522180/