我开始在我的django web应用中使用AWS Elasticache。
我首先使用自动发现功能将缓存位置设置为唯一的端点,但它似乎不起作用。
我使用pylibmc (1.2.2)和django-pylibmc-sasl (0.2.4)从python连接到memcached。
自动发现功能在这些客户端上是否有效?我如何启用它?
发布于 2014-03-01 07:11:20
快速回答
支持django:django-elasticache
长长的答案
ElastiCache提供了memcached接口,因此有三种使用它的解决方案:
1.使用location = Configuration Endpoint配置Memcached。
在这种情况下,您的应用程序将随机连接到集群中的节点,并以非最佳方式使用缓存。在某个时刻,您将连接到第一个节点并设置项目。一分钟后,您将连接到另一个节点,并且将无法获取此项目。
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',
]
}
}3.使用django-elasticache。
它将连接到集群并检索所有节点的ip地址,并将memcached配置为使用所有节点。
CACHES = {
'default': {
'BACKEND': 'django_elasticache.memcached.ElastiCache',
'LOCATION': 'cache-c.draaaf.cfg.use1.cache.amazonaws.com:11211',
}
}使用节点列表(django-elasticache)设置与仅连接到一个配置端点(使用dns路由)之间的区别您可以在此图中看到:

发布于 2013-02-01 09:26:14
我使用的是PyLibMC绑定,它似乎不支持自动发现。
使用Django内置的Memcached后端和documentation中使用的Memcached后端可以很好地使用Elasticache提供的唯一端点。
现在一切都运行得很好,我用Memcached改进了很多响应时间。
发布于 2013-10-22 16:08:03
我为aws elasticache写了一个python客户端,你可以试试。
安装:
pip install python_memcached hash_ring
pip install elasticache_pyclient简单用法:
>>> 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
https://stackoverflow.com/questions/14612632
复制相似问题