一尘不染

使用Elastic BeanStalk + Django设置ElastiCache Redis

redis

但是,我可以仅在AWS(Elasticache)上创建Redis实例并将其端点添加到Django设置中吗?例如,使用Django-
redis

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://<REDIS AWS ENDPOINT AND PORT HERE>",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

我怀疑以上情况可能会导致多个beantalk服务器实例出现问题。鉴于此,鉴于有一个显式编写的用于与AWS Elasticache for
Memcache接口的Django包,我很想使用MemCache而不是Redis:django-
elasticache

谢谢,安迪。


阅读 295

收藏
2020-06-20

共1个答案

一尘不染

简短的回答:是的。

长答案:我还没有使用过Elastic Beanstalk,但是我可以确认,如果您在ElastiCache中创建Redis 实例
(即:禁用集群模式),它将可以正常使用django-redis。只需将插入primary_endpoint您发布的Django配置中即可。

注意:如果您打算使用只读副本,请按以下步骤进行设置:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": [
            "redis://<MASTER ENDPOINT>",
            "redis://<SLAVE ENDPOINT>",
        ]
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

但是,如果启动Redis 集群 ,则不能使用vanilla django- redis。您必须按照本博文redis-py- cluster所述使用它。复制到这里:

CACHES = {
  'default': {
    'BACKEND': 'django_redis.cache.RedisCache',
    'LOCATION': 'redis://XXX.YYY.ZZZ.cache.amazonaws.com/0',
    'OPTIONS': {
      'REDIS_CLIENT_CLASS': 'rediscluster.RedisCluster',
      'CONNECTION_POOL_CLASS': 'rediscluster.connection.ClusterConnectionPool',
      'CONNECTION_POOL_KWARGS': {
        'skip_full_coverage_check': True # AWS ElasticCache has disabled CONFIG commands
      }
    }
  }
}
2020-06-20