【问题标题】:Redis replication and not RO slavesRedis 复制而不是 RO 从属
【发布时间】:2015-07-28 06:04:10
【问题描述】:

美好的一天!
假设我们有一个 redis-master 和几个 slave。主要目标是存储所有数据,而从属用于为用户查询数据。但是查询有点复杂,需要存储一些临时数据。我还想将查询结果缓存几分钟。

我应该如何配置复制来保存临时数据和缓存?

【问题讨论】:

    标签: redis replication


    【解决方案1】:

    Redis slaves 有可选的支持来接受写入,但是在使用它们之前你必须了解 writable slaves 的一些限制,因为它们有不小的问题。

    1. 从服务器上创建的密钥不支持过期。实际上,在最近的 Redis 版本中,它们 似乎 可以工作,但实际上是泄漏而不是过期,直到下次您从头开始重新同步从属设备与主服务器或发出 FLUSHALL 或类似问题。这个问题有很深的原因......目前还不清楚我们是否会完全弃用可写从属服务器、寻找解决方案或拒绝可写从属服务器过期。
    2. 无论如何,您可能希望使用不同的 Redis 数字 DB(SELECT 命令)来存储您的中间数据(您可以使用 MULTI/.../MOVE/EXEC 事务来在当前选择了数据所属的数据库,并将密钥移至其他数据库,这样就可以清楚地知道密钥是否在累积,并且您可以不时进行 FLUSHDB)。
    3. 您在从属设备上创建的密钥是易失的,当主设备与从设备重新同步时,它们可能会消失。对您来说似乎不是问题,因为如果它们的密钥不再存在,您可以重新计算,但应该小心,
    4. 如果您将此从属设备选为主设备,则您内部还有其他密钥。

    因此,在此设置中肯定有一些事情需要牢记,但它在某些方面是可行的。但是,您可能需要考虑替代策略。

    1. 从属端的 Lua 脚本,以便在 Lua 中过滤您的数据。不如 Redis C 命令通常快。
    2. 直接在实际数据集中预计算数据,以便仅使用只读命令即可进行查询。
    3. MIGRATE 以便将感兴趣的密钥从从属设备迁移到专门用于执行后计算的实例(另一个主设备)。

    如果不深入分析实际用例/问题,很难说出最佳策略是什么,但我希望这些通用指南有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      • 2020-10-05
      • 2022-08-19
      • 1970-01-01
      相关资源
      最近更新 更多