【问题标题】:Memcached: auto-discovery python support on AWS Elasticache?Memcached:AWS Elasticache 上的自动发现 python 支持?
【发布时间】:2013-01-14 18:40:31
【问题描述】:

我开始在我的 django Web 应用程序中使用 AWS Elasticache。

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

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

自动发现功能是否适用于这些客户端?如何启用它?

【问题讨论】:

    标签: python django caching memcached


    【解决方案1】:

    我为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

    【讨论】:

    • 请注意,不鼓励link-only answers,所以答案应该是搜索解决方案的终点(与另一个参考文献的中途停留相比,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
    【解决方案2】:

    快速解答

    对于 django 是的:django-elasticache

    长答案

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

    1。 Memcached 配置为 location = 配置端点。

    在这种情况下,您的应用程序 将随机连接到集群中的节点,缓存将被使用而不是最优的 大大地。在某个时刻,您将连接到第一个节点并设置项目。一分钟后 您将连接到另一个节点,将无法获取此项目。

    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 路由),您可以在 这张图:

    【讨论】:

    • 如果你去django-elasticache获取安装说明,不要使用命令:pip install django-pylibmc - 它不包含“django_elasticache”,会导致内部服务器错误。改用命令从 Git 安装。
    【解决方案3】:

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

    在 Django 中内置并在 documentation 中使用的 Memcached 后端与 Elasticache 提供的独特端点配合良好。

    现在一切正常,我使用 Memcached 大大提高了响应时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 2021-03-01
      相关资源
      最近更新 更多