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