当前位置: 首页 > 知识库问答 >
问题:

python - django如何使用多个redis数据库?

鲁鹤轩
2023-08-25

redis不是有16个数据库吗?
django默认配置使用的是索引为0的数据库。
django如何配置多个redis数据库,例如需要使用redis的0和2数据库?
在视图层应该如何选择不同的redis数据库使用?

共有2个答案

韦绍晖
2023-08-25

首先在django里用redis,自然推荐你使用 django-redis 库。然后回归到你得需求,你需要在 settings.pyCACHES 里面设置多个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)
乐正瑞
2023-08-25

我理解为你用的是 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 而已……

 类似资料:
  • 我们将redis用于缓存和会话。我希望能够使用分离redis数据库(相同的服务器,只是不同的数据库)为每个情况,以及能够使用相同的服务器生产和预生产。我知道Redis允许您在一台服务器上定义多个数据库(http://www.redisocokbook.org/multiple_databases.html),但是我不知道如何将其翻译成Redis。配置(至少根据文档http://laravel.co

  • 问题内容: 我正在尝试将Django多数据库配置与MYSQL用作默认数据库,将redshift用作分析数据库。我的配置看起来像这样: 当我尝试迁移分析应用程序时,请使用以下命令 我看到以下错误: 关于如何解决此问题的任何想法?我正在使用和 问题答案: 特定的问题是:Django想要创建一个具有主键的迁移管理表来跟踪迁移历史。Redshift不支持。 但是,这种方法更普遍的问题是,您真的不希望在Re

  • 问题内容: 有没有一种方法可以使用Redis刷新Redis数据库? 我正在寻找类似或 问题答案: Redis-py实际上具有以下功能:

  • 问题内容: 我听说过redis-cache,但是它是如何工作的呢?通过以某种方式缓存rdbms查询,它是否被用作Django和我的rdbms之间的一层? 还是应该直接将其用作数据库?我对此表示怀疑,因为该github页面不包含任何登录详细信息,所以没有设置..只是告诉您设置一些config属性。 问题答案: 这个Redis的Python模块在自述文件中有一个清晰的用法示例:http : //git

  • 问题内容: 请考虑以下示例 [+]输出:set([‘1’,‘3’,‘2’]) [+]输出:set([[‘1’,‘3’,‘2’,’set([3,4])’]) [+] set([‘1’,’[3,4]’,‘3’,‘2’,’set([3,4])’]) 根据https://redis-py.readthedocs.org/zh-CN/latest/中的官方文档, sadd(name,* values)添加值

  • 问题内容: 我一直在评估django,并想知道以下情况是否可能。我已经看过常规的多个数据库文档,所以请不要指向我,因为据我所知,并没有提到该用例。如果我错了,我把它拿回来:) 我想要一个主数据库,我的大多数应用程序模型都将驻留在其中,但是该应用程序之一将需要动态创建数据库,这些数据库将是客户特定的数据库。 数据库路径(我计划使用sqlite)将存储在主数据库中,因此需要更改游标,但模型将保持不变。