django如何使用多个redis数据库?
redis不是有16个数据库吗?
django默认配置使用的是索引为0的数据库。
django如何配置多个redis数据库,例如需要使用redis的0和2数据库?
在视图层应该如何选择不同的redis数据库使用?
回答:
我理解为你用的是 django-redis
这个模块做的缓存。
你可以在配置文件的连接字符串里直接指定库的索引:
redis://127.0.0.1:6379/1# 或者
unix:///your_redis_path/redis.sock?db=1
要是有多个缓存来源,配置多个就好了;
CACHES = { "default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379"
},
"db1": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1"
},
"db2": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/2"
}
}
P.S. redis 并不是只有 16 个数据库,只是你通过 Linux 发行版的包管理工具安装的 redis-server 后默认的配置文件里这个数设置的是 16 而已……
回答:
首先在django里用redis,自然推荐你使用 django-redis
库。然后回归到你得需求,你需要在 settings.py
的 CACHES
里面设置多个redis数据库配置,并设置名称。比如:
CACHES = { "default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0"
},
"db1": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1"
}
}
然后在你得视图层,使用 get_redis_connection
函数去获取对应的redis数据库。
def get_redis_connection(alias="default", write=True): """
Helper used for obtaining a raw redis client.
"""
from django.core.cache import caches
cache = caches[alias]
if not hasattr(cache, "client"):
raise NotImplementedError("This backend does not support this feature")
if not hasattr(cache.client, "get_client"):
raise NotImplementedError("This backend does not support this feature")
return cache.client.get_client(write)
以上是 django如何使用多个redis数据库? 的全部内容, 来源链接: utcz.com/p/938989.html