繁体   English   中英

Redis复制而非RO从属

[英]Redis replication and not RO slaves

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

如何配置复制以保存临时数据和缓存?

Redis从站具有可选的支持来接受写入,但是在使用它们之前,您必须了解可写从站的一些限制,因为它们存在一些琐碎的问题。

  1. 在从属服务器上创建的密钥将不支持过期。 实际上,在最新版本的Redis中,它们似乎可以工作,但实际上是泄漏的,而不是过期的,直到下一次从头重新将slave与master同步或发出FLUSHALL之类。 这个问题有很深的原因...目前尚不清楚我们是否将完全弃用可写的从属服务器,找到解决方案,或者拒绝可写的从属服务器过期。
  2. 无论如何,您可能想要使用其他Redis数字数据库(SELECT命令)来存储中间数据(您可以使用MULTI /.../ MOVE / EXEC事务来在当前选定的数据库中生成中间结果数据所属的位置,并将密钥移至其他数据库,因此可以清楚地知道密钥是否在累积,您可以不时使用FLUSHDB)。
  3. 您在从站上创建的密钥是易失性的 ,当主站与从站重新同步时,它们可能会消失。 对于您来说这似乎不是一个问题,因为如果它们的密钥不再存在,您可以重新计算,但是应该小心,
  4. 如果将此从站选举为主站,则内部将具有其他键。

因此,在此设置中肯定要记住一些事情,但是以某种方式可行。 但是,您可能需要考虑其他策略。

  1. 从属端的Lua脚本是为了过滤Lua中的数据。 速度不如Redis C命令那么快。
  2. 直接在实际数据集中进行数据预计算,以便仅使用只读命令就可以进行查询。
  3. 迁移以便将有趣的密钥从从属迁移到专门设计用于执行后期计算的实例(另一个主控)。

在不深入分析实际用例/问题的情况下,很难说出最佳策略是什么,但是我希望这个通用指南能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM