Redis复制而不是RO从属

时间:2015-05-16 10:08:22

标签: redis replication

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

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

1 个答案:

答案 0 :(得分:5)

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

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

    1. 从属端的Lua脚本,以便在Lua中过滤您的数据。不像Redis C命令那么快。
    2. 直接在实际数据集中预先计算数据,以便只使用只读命令使您的查询成为可能。
    3. MIGRATE,用于将有趣的密钥从从属服务器迁移到专门为执行后期计算而设计的实例(另一个主服务器)。
    4. 如果不对实际用例/问题进行深入分析,很难说出最佳策略是什么,但我希望这条通用指南有所帮助。