【问题标题】:Maximum number of databases in redisredis最大数据库数
【发布时间】:2016-08-12 15:01:51
【问题描述】:

在 redis 中,选择“数字”可以访问该索引处的特定数据库。我的 redis 配置它设置为 16(为什么?)。我们需要对应用进行高扩展性,那么最大限制是多少?

【问题讨论】:

  • 那么,你的“扩展”计划是在同一个 redis 进程中使用不同的数据库?这是什么缩放比例?
  • 我们有这样的情况 Situation1: tenant1 -> nginx+lua+redis tenant2 -> nginx+lua+redis,.......同一个redis进程中的不同数据库。情况2:每个租户的每个请求都会通过redis的proxy_server,为了负载均衡我们这里也需要扩容。
  • 你需要单独的redis进程(或redis集群),而不是单独的数据库。

标签: caching redis nosql


【解决方案1】:

Redis 数据库的默认数量是 16,但可以配置更多。由于默认设置,您的配置中可能有 16 个(请参阅Storing Data with Redis)。

数据库(在 Redis 中)是一种对数据进行逻辑分区的方法(想想“命名空间”、“键空间”,或者用 RDBMS 术语来说,一种模式)。 Redis 数据库与可扩展性无关,因此您的“最大限制”问题与上下文无关。

按照 Sergio 在他的评论中建议的那样进行扩展:为单独的应用程序创建单独的 Redis 实例/集群。

【讨论】:

    【解决方案2】:

    答案:100 万(可能)或 Linux 上的 100K(可能)

    官方信息

    所以official documentation表示默认设置为16。这可以在redis.conf中更改。官方文档并没有说明这里允许的范围。

    原创研究

    通过在我的本地 Windows 10 WSL Debian 安装上进行实验,我发现我可以将 conf 值设置为任何值,并且服务器可以正常启动。

    但是,当我尝试通过命令行选择数据库时,我的计算机会死机。我尝试了几个值,系统在 1,000,000(一百万)时完美而快速地运行,并在 10,000,000(一千万)时冻结。这个数字在计算机世界中似乎相当随意,所以它要么是内存限制(似乎不太可能,但我不知道 WSL 的内存处理),要么是开发人员设置的任意限制。

    我在我的 CentOS 7 Box 上进行了一些类似的测试,但 redis 拒绝以 100 万启动。但是从10万开始就好了。不知道为什么它与我的 Windows 系统不同,或者为什么它只是拒绝启动而不是启动然后在选择像我的 WSL 版本这样的数据库时失败。

    免责声明

    正如@kit 在他之前的答案中已经说过的那样,数据库不是为“缩放”而设计的,而是为“命名空间”而设计的。例如,一个 SAAS 可能运行一个代码库,但有数百个客户端,每个客户端都有自己的“命名空间”或 redis 数据库。这使您可以在不影响其他客户端的情况下刷新客户端,并最大限度地减少管理开销。但是运行几十个独特的 wordpress 实例会更适合每个独特的 redis 安装。

    【讨论】:

    • 请问,这个问题与maxmemory-policy有关吗
    • 此外,如果在 aws elasticahe 上遇到此问题,任何关于如何解决的想法
    • @IsraelObanijesu 我不知道 maxmemory-policy 或 aws elasticache 是否与此 Redis 服务器答案有任何关系。我建议您提出一个新问题(可能每个 cmets 都有一个单独的问题)以找出答案。
    【解决方案3】:

    Redis中默认的数据库数量是16个,索引:0~15。你可以编辑你的redis.conf文件来调整这个数量:

    步骤:

    1)编辑配置文件

    vi /etc/redis.conf
    

    使用 Yum 安装时,Centos 上的默认配置路径为 /etc/redis.conf

    2)查找关键字:“数据库”

    # Set the number of databases. The default database is DB 0, you can select
    # a different one on a per-connection basis using SELECT <dbid> where
    # dbid is a number between 0 and 'databases'-1
    databases 16
    

    数据库 16:16 是新安装的默认值

    3)更新数据库数量:

    databases 30
    

    4)结束,保存并退出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-15
      • 2011-11-30
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 2018-01-13
      • 2021-06-03
      • 1970-01-01
      相关资源
      最近更新 更多