使用 Elastic BeanStalk + Django 设置 ElastiCache Redis
Setting up ElastiCache Redis with Elastic BeanStalk + Django
另一个 Whosebug 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 接口:django-elasticache.
谢谢,
安迪.
简短回答:是的。
长答案:我没有使用过 Elastic Beanstalk,但是我可以确认,如果您在 ElastiCache 中创建 Redis instance(即:禁用集群模式),它将正常工作django-redis
。只需将 primary_endpoint
插入到您发布的 Django 配置中即可。
N.B。如果您打算使用只读副本,请按如下方式设置:
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
with it as described 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
}
}
}
}
另一个 Whosebug 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 接口:django-elasticache.
谢谢, 安迪.
简短回答:是的。
长答案:我没有使用过 Elastic Beanstalk,但是我可以确认,如果您在 ElastiCache 中创建 Redis instance(即:禁用集群模式),它将正常工作django-redis
。只需将 primary_endpoint
插入到您发布的 Django 配置中即可。
N.B。如果您打算使用只读副本,请按如下方式设置:
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
with it as described 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
}
}
}
}