分享

django-cache-machine-Django的自动缓存和失效的python库

 CNStudent 2020-12-14

django cache machine是Django的自动缓存和失效的python库。

  较早版本的“缓存计算机”要求您使用自定义的缓存后端。这些不再需要,它们已从高速缓存机中删除,现在使用标准的Django缓存后端。

通过COUNT查询

使用QuerySet.count()可以调用缓存,但是这样的缓存不能可控的失效。高速缓存机必须完全选择才能找到对象键,这可能比您要提取的数据要多得多。我建议缓存超时时间较短;足够长的时间来避免重复的查询,但是足够短的时间以至于过时的计数将不是什么大问题。

CACHE_COUNT_TIMEOUT = 60  # seconds, not too long.

默认情况下,QuerySet.count()不会调用缓存。只有将CACHE_COUNT_TIMEOUT设置为caching.base.NO_CACHE以外的值时, 它们才会被缓存。

缓存管理器

要为模型启用缓存,请将添加CachingManager到该类并从继承CachingMixin。如果要使相关查找(外键)进入缓存,则CachingManager必须是默认管理器。如果您有多个应该缓存的管理器,请CachingQuerySet从另一个管理器的 get_queryset方法返回a而不是子类化CachingManager,因为这将多次连接post_save和post_delete信号。

最小缓存模型如下所示:

每当您运行查询时,CachingQuerySet都将尝试在缓存中查找该查询。查询由键入{prefix}:{sql}。如果存在,我们返回缓存的结果集,每个人都很高兴。如果查询不在高速缓存中,则执行运行数据库查询的常规代码路径。随着结果集中的对象被迭代,它们被添加到一个列表中,一旦迭代完成,该列表将被缓存。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多