我开始在我的Django web应用中使用AWS Elasticache。
我通过使用自动发现功能将缓存位置设置为唯一的端点,但似乎没有起作用。
我正在使用pylibmc(1.2.2)和django-pylibmc-sasl(0.2.4)从Python连接到Memcached。
这些客户端支持自动发现功能吗?我该如何启用它?
是的,对于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',
}
}
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'