django cache machine-Django的自动缓存和失效的python库
2021-03-08 14:30
django cache machine是Django的自动缓存和失效的python库。
较早版本的“缓存计算机”要求您使用自定义的缓存后端。这些不再需要,它们已从高速缓存机中删除,现在使用标准的Django缓存后端。
安装
您可以从pypi获取它:
pip install django-cache-machine
您也可以通过网盘下载django-cache-machine的源代码。
通过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信号。
最小缓存模型如下所示:
from django.db import models from caching.base import CachingManager, CachingMixin class Zomg(CachingMixin, models.Model): val = models.IntegerField() objects = CachingManager() # if you use Django 2.0 or later, you must set base_manager_name class Meta: base_manager_name = ‘objects‘ # Attribute name of CachingManager(), above
每当您运行查询时,CachingQuerySet都将尝试在缓存中查找该查询。查询由键入{prefix}:{sql}。如果存在,我们返回缓存的结果集,每个人都很高兴。如果查询不在高速缓存中,则执行运行数据库查询的常规代码路径。随着结果集中的对象被迭代,它们被添加到一个列表中,一旦迭代完成,该列表将被缓存。
文章标题:django cache machine-Django的自动缓存和失效的python库
文章链接:http://soscw.com/index.php/essay/61856.html