这是我参与2022首次更文挑战的第17天,活动详情查看2022首次更文挑战
说到cache很多人会想到数据库缓存、服务器端缓存(代理服务器缓存、CDN 缓存)、浏览器缓存。其中服务器缓存又包括代理服务器缓存、CDN缓存,浏览器缓存包括HTTP 缓存、indexDB、cookie、localstorage等。
对于一般的Django缓存方案有很多,比如页面静态化,接口缓存等等,这些都离不开Django cache,今天我们就来说说Django中的cache缓存。
安装
网上有很多教程
自己只 pip 安装了 python-memcached
setting 中增加cache配置
# localhost
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
教程
docs.djangoproject.com/zh-hans/3.0…
基本使用:
cache.get(key, default=None, version=None)
- key 是一个字符串,value 可以任何 picklable 形式的 Python 对象。
- default 默认参数。如果对象不在缓存中,将返回指定的值。
- version 通过Django服务器生成的缓存键的默认版本号,有点类似与Redis的db
如果对象不在缓存中,cache.get() 将返回 None 建议不要在缓存中存储为 None 的值,因为你不能分辨你存储的 None 值还是因为缓存命中返回的 None 值。
cache.set(key, value, timeout=DEFAULT_TIMEOUT, version=None)
- key 是一个字符串,
- value 可以任何 picklable 形式的 Python 对象。
- timeout 参数是可选的,默认为None 是 CACHES 中相应后端的 timeout 参数。它是值存在缓存里的秒数。timeout 设置为 None 时将永久缓存。timeout 为0将不缓存值。
- version 通过Django服务器生成的缓存键的默认版本号,有点类似与Redis的db
cache.add(key, value, timeout=DEFAULT_TIMEOUT, version=None)
它与 set() 带有相同的参数,但如果指定的键已经存在,将不会尝试更新缓存
cache.delete(key, version=None)
显示地删除键,以清空特定对象的缓存
cache.clear()
删除缓存里的所有键
cache.touch(key, timeout=DEFAULT_TIMEOUT, version=None)
为键设置一个新的过期时间 成功 返回 True,否则返回 False。