django - 使用 Elastic BeanStalk + Django 设置 ElastiCache Redis

标签 django amazon-web-services redis amazon-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",
        }
    }
}

我怀疑以上内容可能会导致多个 beantalk 服务器实例出现问题。鉴于此,我很想使用 MemCache 而不是 Redis,因为有一个 Django 包明确编写用于与 Memcache 的 AWS Elasticache 接口(interface):django-elasticache .

谢谢, 安迪。

最佳答案

简短的回答:是的。

长答案:我没有使用过 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与描述的一样in this post .复制在这里:

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
      }
    }
  }
}

关于django - 使用 Elastic BeanStalk + Django 设置 ElastiCache Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42746759/

相关文章:

python - Prefetch_related() 加入第一项

python - Django : Long Object Attribute Error

雷迪斯 : Multiple keys vs bigger value

redis - 使用 gulp 启动 redis 服务器

python - Django 下载文件

python - 使用 `get_ancestors` 中的 `django-mptt` 函数时的错误结果

amazon-web-services - 如何将Redis与AWS ECS结合使用?

database - 私有(private)云上的 Web 应用程序?

python - EC2 用户数据无法通过 python boto 命令工作

rust - 在 Rust 中反序列化 redis 的值(FromRedisValue)