【问题标题】:What are the drawbacks and advantages to implementing namespacing with databases in Redis?在 Redis 中使用数据库实现命名空间有哪些缺点和优点?
【发布时间】:2014-05-11 07:42:52
【问题描述】:

尝试以一种简单且(在某种程度上)可扩展的方式组织我们的 Redis 键空间,我们发现了一种有趣的机制:数据库。这个想法将是一个名称(例如person)到一个数据库编号,例如0。然后,命名空间person 上的所有操作都将在数据库0 上进行。

这样做有什么缺点和优点?有没有更好的办法?

P.S.:我们使用的是Python 2.7

非常感谢!

【问题讨论】:

    标签: python database namespaces redis database-connection


    【解决方案1】:

    强烈建议不要使用多个 Redis 数据库。

    不要在生产环境中使用它,如果不是必需品(例如当您处理端口范围限制、托管 redis 等时)。

    请参阅this 帖子。

    我们所有的 redis 实例都有以下配置参数:

    databases 1
    

    我们如何处理,如下:

    我们分片。我们先连接一个小的redis实例,它只包含连接字符串。给定一个上下文/环境,我们连接到几个 redis 实例。大多数客户端有 4 个连接:1 个用于连接池,1 个用于只读配置设置,1 个用于读取批量数据,1 个用于写入批量数据。我们在适当的地方放置了哨兵。

    我们使用 Lua 脚本将它们方便地结合在一起。有关一般要点,请参阅此diagram

    希望这会有所帮助,TW

    【讨论】:

    • 您能否提供一些参考以说明为什么强烈建议不要这样做?我发现 Redis cluster 不支持多个数据库的引用,但单实例不支持。
    • 我已经提供了一个,我在其中说明了原因。往上看。这里是another reference
    • 还有一个:here。请注意,我说的是“强烈反对”。它没有,也没有计划,弃用多个数据库。它已经提上议程很短时间了,但最终决定放弃。
    猜你喜欢
    • 2010-11-30
    • 2021-01-02
    • 2023-03-28
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多