亚马逊Elasticache的Django缓存后端(memcached)

django-elasticache的Python项目详细描述


Amazon Elasticache的简单Django缓存后端(基于memcached)。它使用 pylibmc并设置到每个 群集中的节点使用 auto discovery

要求

  • Pylibmc
  • Django 1.5+。

它是在Python2.7和3.4上编写和测试的。

安装

pypi

pip install django-elasticache

或者github

pip install -e git://github.com/gusdan/django-elasticache.git#egg=django-elasticache

用法

缓存后端应该如下所示:

CACHES = {
    'default': {
        'BACKEND': 'django_elasticache.memcached.ElastiCache',
        'LOCATION': 'cache-c.draaaf.cfg.use1.cache.amazonaws.com:11211',
        'OPTIONS' {
            'IGNORE_CLUSTER_ERRORS': [True,False],
        },
    }
}

通过第一次调用cache,它连接到集群(使用LOCATIONparam)。 获取所有节点的列表,并使用full设置pylibmc客户端 节点列表。因此,您的缓存将与群集中的所有节点一起工作,并且 自动检测群集中的新节点。节点列表存储在类级别 缓存,因此只有在重新启动工作进程后,群集中的任何更改才会生效。 但是,如果您使用的是Gunicorn或mod_wsgi,则通常有max_request设置 在处理了一些请求后重新启动进程,因此自动发现将起作用 好的。

LOCATION不支持时,IGNORE_CLUSTER_ERRORS选项非常有用 对于config get cluster。当设置为True并且config get cluster失败时, 它返回具有提供给LOCATION的相同端点的单个节点的列表。

Django Elasticache更改默认Pylibmc参数以提高性能。

其他解决方案

Elasticache提供memcached接口,因此有三种使用方法:

一。memcached配置为location=configuration endpoint

在这种情况下,您的申请 将随机连接到群集中的节点,缓存将以非最佳方式使用 太好了。在某个时刻,您将连接到第一个节点并设置项。几分钟后 您将连接到另一个节点,无法获取此项目。

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
        'LOCATION': 'cache.gasdbp.cfg.use1.cache.amazonaws.com:11211',
    }
}

2.memcached配置所有节点

会很好的,memcache客户端会 在所有节点之间分离项,并在客户端平衡负载。你会 只有在添加新节点或删除旧节点后才有问题。在这种情况下你应该 手动添加新节点,不要忘记在aws上进行所有更改后更新应用程序。

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
        'LOCATION': [
            'cache.gqasdbp.0001.use1.cache.amazonaws.com:11211',
            'cache.gqasdbp.0002.use1.cache.amazonaws.com:11211',
        ]
    }
}

三。使用django elasticache

它将连接到群集并检索IP地址 并将memcached配置为使用所有节点。

CACHES = {
    'default': {
        'BACKEND': 'django_elasticache.memcached.ElastiCache',
        'LOCATION': 'cache-c.draaaf.cfg.use1.cache.amazonaws.com:11211',
    }
}

使用节点列表(django elasticache)和 连接到只能在上看到的一个配置终结点(使用DNS路由) 此图:

https://raw.github.com/gusdan/django-elasticache/master/docs/images/get%20operation%20in%20cluster.png

测试

像这样运行测试:

nosetests

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

推荐PyPI第三方库


热门话题
javascript如何找到socket。同一局域网上的IO服务器?   将Java代码格式化为Word/RTF格式   java学习对象以及如何将分配的变量封装到私有变量   java Websocket客户端不在Tomcat中工作   java如何在点击按钮时打开本机表情键盘?   java使用哪个Maven GlassFish插件?   Eclipse Java构建路径不允许添加外部JAR   继承Java6集合。勾选适当的用法   JavaApacheDateUtils:使用多个模式解析日期   java hibernate如何生成查询?   具有id或链接的java Dropbox下载文件或文件夹   java模态对话框未在PrimeFaces 5上显示   java将类对象转换为人类可读的字符串   更新数据库中字段的java通用方法   java无法通过Apache Tomcat访问网络文件夹