我开始在我的django网络应用程序中使用AWS Elasticache。
我首先使用自动发现功能将缓存位置设置为唯一端点,但似乎无效。
我正在使用pylibmc(1.2.2)和django-pylibmc-sasl(0.2.4)从python连接到memcached。
自动发现功能是否适用于这些客户端?我该如何启用它?
答案 0 :(得分:8)
是的django:django-elasticache
ElastiCache提供了memcached接口,因此有三种使用它的解决方案:
在这种情况下你的申请 将随机连接到群集中的节点,缓存将使用不是最佳的 办法。在某些时刻,您将连接到第一个节点和设置项目。几分钟后 您将连接到另一个节点,但无法获得此项目。
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
'LOCATION': 'cache.gasdbp.cfg.use1.cache.amazonaws.com:11211',
}
}
它会正常工作,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',
]
}
}
它将连接到群集并检索IP地址 在所有节点中配置memcached以使用所有节点。
CACHES = {
'default': {
'BACKEND': 'django_elasticache.memcached.ElastiCache',
'LOCATION': 'cache-c.draaaf.cfg.use1.cache.amazonaws.com:11211',
}
}
设置与节点列表(django-elasticache)和 只能连接到一个配置端点(使用dns路由),您可以看到 这张图:
答案 1 :(得分:1)
我使用的PyLibMC绑定似乎不支持自动发现。
使用Django内置并在documentation中使用的Memcached后端与Elasticache提供的唯一端点配合良好。
现在一切正常,我用Memcached改进了很多响应时间。
答案 2 :(得分:1)
我为aws弹性编写了一个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