【问题标题】:Using data from multiple redis databases in one command在一个命令中使用来自多个 redis 数据库的数据
【发布时间】:2012-11-19 23:46:11
【问题描述】:

在我目前的项目中,我积极地将 redis 用于各种目的。当前应用有2个redis数据库

  1. 第一个绝对包含临时数据:有多少用户在线,谁在线,各种管理员的计数器。该数据库在应用程序启动前被启动脚本清除。
  2. 第二个数据库用于存储持久数据,例如用户的评分、用户的朋友等。

一切似乎都是正确的,每个人都很开心。

但是,当我开始在我的应用程序中实现一项新功能时,我发现我需要将一组与用户的朋友与一组在线用户相交。这些集合存储在不同的 redis 数据库中,我没有发现在 redis 中执行此任务的任何可能性,除了更改应用程序架构并将所有键移动到一个命名空间中(数据库)。

实际上有没有办法使用来自多个数据库的数据在 redis 中执行某些命令?或者我的 redis 用例是错误的,我必须修复系统架构?

【问题讨论】:

    标签: redis


    【解决方案1】:

    没有。有一个命令可以很容易地将键移动到另一个数据库:

    http://redis.io/commands/move

    如果您将所有密钥移至一个数据库,请确保您没有任何密钥冲突!您可以为临时数据库中的键添加后缀或前缀以确保绝对确定。如果目标数据库中已存在密钥,则 MOVE 将不执行任何操作。因此,请确保您对“0”回复采取行动

    使用多个数据库绝对不是一个好主意:

    来自 Salvatore Sanfilippo(redis 的创建者)的一句话:

    我知道这很有用,但不幸的是我认为 Redis 多个数据库错误是我在 Redis 设计中最糟糕的决定 所有...没有任何真正的收获,它使内部结构很多 更复杂。现实情况是数据库不能很好地扩展 原因的数量,例如密钥和 VM 的活动过期。如果数据库 可以使用字符串执行选择我可以看到此功能 用作可扩展的 O(1) 字典层,但事实并非如此。

    有DB号,默认几个DB,我们是通信 我认为更好的是这个功能是什么以及如何使用。我希望 在某些时候我们可以完全放弃对多个数据库的支持,但我认为 可能为时已晚,因为有很多人依赖于此 他们工作的特色。

    https://groups.google.com/forum/#!msg/redis-db/vS5wX8X4Cjg/8ounBXitG4sJ

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      相关资源
      最近更新 更多