使用Elastic BeanStalk + Django设置ElastiCache Redis

时间:2017-03-12 11:20:58

标签: django amazon-web-services redis elastic-beanstalk amazon-elasticache

另一个stackoverflow answer表示您需要设置elasticache.config文件以自动创建带有ElastiCache的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",
        }
    }
}

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

谢谢, 安迪。

1 个答案:

答案 0 :(得分:4)

简答:是的。

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

N.B。如果您打算使用只读副本,请将其设置为:

primary_endpoint

但是,如果您启动Redis 群集,则无法使用vanilla CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": [ "redis://<MASTER ENDPOINT>", "redis://<SLAVE ENDPOINT>", ] "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } } 。您必须按照redis-py-cluster所述使用in this post。复制在这里:

django-redis