Django缓存后端使用pylibmc
项目描述
此软件包为Django提供了一个使用pylibmc的memcached缓存后端。您想使用pylibmc,因为它速度快。
您需要django-pylibmc吗?
Django直接支持pylibmc。要使用它,设置您的缓存后端
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache', 'LOCATION': '127.0.0.1.11211', } }
有关使用此缓存后端的详细信息,请参阅Django文档。
使用django-pylibmc的两种理由是
您需要使用二进制协议
您需要使用用户名和密码来访问memcached服务器(例如,在Heroku上的Memcachier)。
需求
django-pylibmc需要pylibmc 1.4.1或更高版本。它支持Django 1.7至1.9,以及Python版本2.7、3.4和3.5。
安装
从 pypi 获取。
pip install django-pylibmc
或者从 github 获取。
pip install -e git://github.com/django-pylibmc/django-pylibmc.git#egg=django-pylibmc
使用方法
您的缓存后端应该看起来像这样
CACHES = { 'default': { 'BACKEND': 'django_pylibmc.memcached.PyLibMCCache', 'LOCATION': 'localhost:11211', 'TIMEOUT': 500, 'BINARY': True, 'OPTIONS': { # Maps to pylibmc "behaviors" 'tcp_nodelay': True, 'ketama': True } } }
要使用 memcached 本地套接字连接,将 LOCATION 设置为文件路径,例如 '/var/run/memcached/memcached.sock'。
如果您想使用 memcached 二进制协议,将 BINARY 键的值设置为如上所示的 True。默认情况下,BINARY 为 False。
如果您想控制 pylibmc 行为,请使用 OPTIONS。默认情况下,OPTIONS 是一个空的字典。
Pylibmc 支持 压缩,可以通过 Django 设置 PYLIBMC_MIN_COMPRESS_LEN 设置压缩值的最小大小(以字节为单位)。默认值为 0,表示禁用。
Pylibmc 1.3.0 及以上版本允许配置压缩级别,可以通过 Django 设置 PYLIBMC_COMPRESS_LEVEL 设置。它接受与 Python zlib 模块相同的值。请注意,pylibmc 在 1.3.0 中将默认值从 1(《Z_BEST_SPEED》)更改为 -1(《Z_DEFAULT_COMPRESSION》)。
使用环境变量进行配置
可选地,可以使用环境变量(例如 Heroku)配置 memcached 连接。为此,声明以下变量
MEMCACHE_SERVERS
MEMCACHE_USERNAME
MEMCACHE_PASSWORD
缓存超时
设置缓存值时,memcache 允许您设置值的过期时间。通常,值设置为秒数超时。但是,也允许其他值,包括 Unix 时间戳和 0 表示“永不过期”。最大的秒数是 30 天 - 更多的话,值会被视为时间戳。
Django 尝试使用自当前时间起秒数的缓存超时。0 被视为 0 秒,意味着项目应立即过期。None 超时表示项目不应过期。也提供对 memcache 风格的 Unix 时间戳的一些支持。
在遥远的过去(Django 1.3?),0 超时被转换为默认超时。
当前的 django-pylibmc 行为是将 0 传递给后端,这应被解释为“永不过期”。省略超时将获取 Django 默认值。
将来,django-pylibmc 将采用最新的 Django 行为。您自己代码的最安全解决方案是省略超时参数(并获取默认超时),或将它设置为秒数超时(少于 30 天)。这样,当 Django 行为被采用时,您的代码将可以工作。避免使用 0、None 或负数作为超时。
测试
安装 tox
pip install tox
像这样运行测试
tox
变更日志
0.6.1 - 2015-12-28
支持 Django 1.7 至 1.9
支持 Python 2.7、3.4 和 3.5
0.6.0 - 2015-04-01
需要 pylibmc 1.4.1 或更高版本
支持 Django 1.4 至 1.8
支持 Python 2.5 至 2.7,以及 Python 3.3 至 3.4
在 Django 1.6 及更高版本中,当省略超时时,使用默认超时,而不是设置为“永不过期”。