使用pylibmc的django缓存后端

django-pylibmc的Python项目详细描述


https://travis-ci.org/django-pylibmc/django-pylibmc.svg

此包为django提供memcached缓存后端,使用 pylibmc。你想用pylibmc是因为 很快。

你需要Django Pylibmc吗?

Django直接支持Pylibmc。要使用它,请设置缓存后端:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
        'LOCATION': '127.0.0.1.11211',
    }
}

Django documentation 有关使用此缓存后端的详细信息。

改用django pylibmc的两个原因是:

  • 您需要使用二进制协议
  • 您需要使用用户名和密码来访问memcached服务器(例如 使用Memcachier on Heroku)。

要求

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 local socket connection, 将LOCATION设置为文件的路径,即'/var/run/memcached/memcached.sock'

如果要使用memcached二进制协议,请设置BINARY键 值为True,如上所示。BINARY默认为False

如果要控制pylibmc behaviors,请使用 OPTIONSOPTIONS默认为空dict。

Pylibmc支持compression和 要压缩的值的最小大小(字节)可以通过django设置 正在设置PYLIBMC_MIN_COMPRESS_LEN。默认值是0,已禁用。

Pylibmc 1.3.0及以上版本允许配置压缩级别,它可以 通过django设置PYLIBMC_COMPRESS_LEVEL进行设置。它接受 与pythonzlib相同的值 模块请注意,pylibmc将默认值从1Z_BEST_SPEED)更改为 到1.3.0中的-1Z_DEFAULT_COMPRESSION)。

配置环境变量

可选地,memcached连接可以配置为环境 变量(在Heroku这样的平台上)。为此,请声明以下内容 变量:

  • MEMCACHE_SERVERS
  • MEMCACHE_USERNAME
  • MEMCACHE_PASSWORD

缓存超时

设置缓存值时,memcache允许您为 价值。通常,该值设置为以秒为单位的超时。但是,其他 允许值包括unix时间戳和“永不过期”的0。这个 最高秒数是30天-超过30天,值是 像时间戳一样对待。

Django尝试在当前缓存超时后的秒数内使用缓存超时 时间。0被视为0秒,这意味着该项应立即过期。 “无”超时表示该项不应过期。有一些 支持memcache风格的unix时间戳。

在遥远的过去(django 1.3?),超时0已转换为默认值 超时。

当前的django pylibmc行为是将0传递给后端,后者应该 被解释为“永不过期”。省略超时将得到django 违约。

今后,Django Pylibmc将采用最新的Django行为。 对于您自己的代码,最安全的解决方案是省略timeout参数(和 获取默认超时),或将其设置为以秒为单位的超时(小于30 天)。这样,当采用django行为时,您的代码就可以工作了。 避免使用超时值0、无或负数。

测试

安装tox

pip install tox

像这样运行测试:

tox

变更日志

0.6.1-2015年12月28日

  • 支持django 1.7到1.9
  • 支持Python2.7、3.4和3.5

0.6.0-2015年4月1日

  • 要求Pylibmc 1.4.1或更高版本
  • 支持django 1.4到1.8。
  • 支持Python2.5到2.7,以及Python3.3到3.4
  • 在django 1.6及更高版本中,当省略超时时,默认值为 使用超时,而不是设置为“永不过期”。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java GridBagLayout不填充区域   java Memozied Fibonacci未运行与常规Fibonacci解决方案   Java Web启动未启动问题   Java中异常和if-then的区别   java从命令提示符运行批处理文件获取错误   socket在Java中验证SSL证书的公共名称   如何在JAVA中检查字符串数组中的相等字   用java语言将音频文件转换成文本文件的语音识别   java为什么foo(1,2,3)没有传递给varargs方法foo(对象…)作为整数[]   java通过蓝牙将奇怪的数据从Arduino传输到Android   java ContainerRequestFilter获取空entitystream   java如何从安卓 studio中删除不兼容类型错误   基本Java错误   在Spring引导中使用REST API时发生java错误   javascript通过从SQL查询派生的URL打开页面