在我目前的项目中,我主动使用redis用于各种目的。当前应用程序有 2个redis数据库:
一切似乎都是正确的,每个人都很开心。
然而,当我开始在我的应用程序中实现新功能时,我发现我需要将一组用户的朋友与一组在线用户相交。这些集存储在不同的redis数据库中,我没有发现在redis中执行此任务的任何可能性,除了更改应用程序体系结构并将所有键移动到一个名称空间(数据库)。
实际上是否有办法使用来自多个数据库的数据在redis中执行某些命令?或者我的redis用例是错误的,我必须修复系统架构?
答案 0 :(得分:5)
没有。有一个命令可以很容易地将密钥移动到另一个DB:
如果将所有键移动到一个DB,请确保没有任何键冲突!您可以为临时数据库中的键添加后缀或前缀,以确保无误。如果目标DB中已存在密钥,MOVE将不执行任何操作。因此,请确保您采取'0'回复
使用多个DB绝对不是一个好主意:
来自Salvatore Sanfilippo(redis的创造者)的报价:
我理解这是如何有用的,但不幸的是我考虑过 Redis多个数据库错误是Redis设计中最糟糕的决定 所有...没有任何实际收益,它使内部很多 更复杂。现实情况是,数据库不能很好地扩展 理由数量,如密钥和VM的活动过期。如果是DB 可以使用字符串执行选择我可以看到此功能 用作可扩展的O(1)字典层,而不是它。
使用DB编号,默认为几个DB,我们是通信 更好的是这个功能是什么,我认为如何使用。我希望 在某些时候,我们可以放弃多个DB支持,但我认为 可能为时已晚,因为有很多人依赖于此 他们的工作特色。
https://groups.google.com/forum/#!msg/redis-db/vS5wX8X4Cjg/8ounBXitG4sJ