在 Django 中对缓存和 django-channels 通道层使用相同的 Redis 存储是否可以?
Is it okay to use the same Redis store for both cache and django-channels channel layer in Django?
我有一个 Django 3.1 应用程序,它使用 Redis 作为其缓存后备存储 (django-redis)。我希望使用 django-channels,它能够 use Redis for channel layers.
同时对缓存和 django-channels 通道层使用相同的 Redis 存储是否安全?换句话说,我希望在我的 settings.py 中包含以下内容,我想知道是否可以。
import environ
env = environ.Env()
REDIS_HOST = env('REDIS_HOST', default='127.0.0.1')
REDIS_PORT = env('REDIS_PORT', default='6379')
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
"LOCATION": "redis://" + REDIS_HOST + ":" + REDIS_PORT + "/0",
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
'CONNECTION_POOL_KWARGS': {'max_connections': 30},
'IGNORE_EXCEPTIONS': True,
}
}
}
CHANNEL_LAYERS = {
"default": {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
"CONFIG": {
"hosts": [(REDIS_HOST, int(REDIS_PORT))],
},
}
}
这是安全的,除非您的缓存有名称冲突,这种情况很少发生,因为键在通道中默认带有前缀:
默认情况下,频道密钥前缀为asgi:
,组密钥前缀为asgi:group:
你可以在这里阅读更多内容:channel key prefix
我有一个 Django 3.1 应用程序,它使用 Redis 作为其缓存后备存储 (django-redis)。我希望使用 django-channels,它能够 use Redis for channel layers.
同时对缓存和 django-channels 通道层使用相同的 Redis 存储是否安全?换句话说,我希望在我的 settings.py 中包含以下内容,我想知道是否可以。
import environ
env = environ.Env()
REDIS_HOST = env('REDIS_HOST', default='127.0.0.1')
REDIS_PORT = env('REDIS_PORT', default='6379')
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
"LOCATION": "redis://" + REDIS_HOST + ":" + REDIS_PORT + "/0",
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
'CONNECTION_POOL_KWARGS': {'max_connections': 30},
'IGNORE_EXCEPTIONS': True,
}
}
}
CHANNEL_LAYERS = {
"default": {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
"CONFIG": {
"hosts": [(REDIS_HOST, int(REDIS_PORT))],
},
}
}
这是安全的,除非您的缓存有名称冲突,这种情况很少发生,因为键在通道中默认带有前缀:
默认情况下,频道密钥前缀为asgi:
,组密钥前缀为asgi:group:
你可以在这里阅读更多内容:channel key prefix