首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Memcached: AWS Elasticache上的自动发现python支持?

Memcached: AWS Elasticache上的自动发现python支持?
EN

Stack Overflow用户
提问于 2013-01-31 04:01:34
回答 3查看 4.8K关注 0票数 7

我开始在我的django web应用中使用AWS Elasticache。

我首先使用自动发现功能将缓存位置设置为唯一的端点,但它似乎不起作用。

我使用pylibmc (1.2.2)和django-pylibmc-sasl (0.2.4)从python连接到memcached。

自动发现功能在这些客户端上是否有效?我如何启用它?

EN

回答 3

Stack Overflow用户

发布于 2014-03-01 07:11:20

快速回答

支持django:django-elasticache

长长的答案

ElastiCache提供了memcached接口,因此有三种使用它的解决方案:

1.使用location = Configuration Endpoint配置Memcached。

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

代码语言:javascript
复制
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
        'LOCATION': 'cache.gasdbp.cfg.use1.cache.amazonaws.com:11211',
    }
}

2. Memcached配置了所有节点。

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

代码语言:javascript
复制
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',
        ]
    }
}

3.使用django-elasticache。

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

代码语言:javascript
复制
CACHES = {
    'default': {
        'BACKEND': 'django_elasticache.memcached.ElastiCache',
        'LOCATION': 'cache-c.draaaf.cfg.use1.cache.amazonaws.com:11211',
    }
}

使用节点列表(django-elasticache)设置与仅连接到一个配置端点(使用dns路由)之间的区别您可以在此图中看到:

票数 8
EN

Stack Overflow用户

发布于 2013-02-01 09:26:14

我使用的是PyLibMC绑定,它似乎不支持自动发现。

使用Django内置的Memcached后端和documentation中使用的Memcached后端可以很好地使用Elasticache提供的唯一端点。

现在一切都运行得很好,我用Memcached改进了很多响应时间。

票数 1
EN

Stack Overflow用户

发布于 2013-10-22 16:08:03

我为aws elasticache写了一个python客户端,你可以试试。

安装:

代码语言:javascript
复制
pip install python_memcached hash_ring
pip install elasticache_pyclient

简单用法:

代码语言:javascript
复制
>>> from elasticache_pyclient import MemcacheClient
>>> mc = MemcacheClient('test.lwgyhw.cfg.usw2.cache.amazonaws.com:11211')
>>> mc.set('foo', 'bar')
True
>>> mc.get('foo')
'bar'

此包调用python_memcached来执行实际的memcache操作,因此它具有与python_memcached完全相同的功能,有关更多选项,可以参考python_memcached。

这是elasticache_pyclient主页:https://github.com/yupeng820921/elasticache_pyclient

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14612632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档