Redis复制而不是RO从属

V. *_*hov 2 replication redis

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

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

ant*_*rez 6

Redis从站有可选的支持来接受写入,但是在使用它们之前你必须了解可写从站的一些限制,因为它们有非常重要的问题.

  1. 在从站上创建的密钥不支持到期.实际上在Redis的最新版本中,它们似乎工作但实际上是泄漏而不是过期,直到下次从头开始重新同步从属设备或发出FLUSHALL或类似的时候.这个问题有很深层次的原因......目前尚不清楚我们是否会根本弃用可写奴隶,找到解决方案或拒绝可写奴隶的过期.
  2. 无论如何,您可能希望使用不同的Redis数字DB(SELECT命令)来存储您的中间数据(您可以使用MULTI /.../ MOVE/EXEC事务以在当前选定的DB中生成中间结果数据所属的位置,并将键移动到其他DB,因此,如果键正在累积,您可以清楚地看到FLUSHDB.
  3. 您在从站上创建的密钥是易失的,当主服务器与从服务器重新同步时,它们可能随时消失.对你来说看起来不是一个问题,因为如果它们不再存在,你可以重新计算,但应该注意,
  4. 如果您将此奴隶选入主人,则内部会有其他钥匙.

因此,在这种设置中肯定要记住一些事情,但它在某种程度上是可行的.但是,您可能需要考虑其他策略.

  1. 从属端的Lua脚本,以便在Lua中过滤您的数据.不像Redis C命令那么快.
  2. 直接在实际数据集中预先计算数据,以便仅使用只读命令使查询成为可能.
  3. MIGRATE是为了将有趣的密钥从从服务器迁移到专门为执行后计算而设计的实例(另一个主服务器).

如果不对实际用例/问题进行深入分析,很难说出最佳策略是什么,但我希望这条通用指南能够提供帮助.