我已经有一个redis节点,现在momery的成本很高,我想将它迁移到更多实例。如果我在每个实例中加载rdb,它必须浪费很多。 我可以使用“keys”获取所有密钥,然后通过对密钥执行一致哈希来分片数据,但这非常难看......任何美丽的解决方案?
答案 0 :(得分:1)
如果你在配置了AOF的情况下运行redis,你可以简单地编写一个读取AOF的脚本。这就是我们所做的。使用RDB配置中的redis,我认为你不能这样做。
如果您正在运行redis 2.6,则可以使用migrate命令:
http://redis.io/commands/migrate
您仍然需要使用KEYS
迭代密钥。
我认为有一个更好的解决方案是使用KEYS
迭代所有密钥,然后一致地哈希它们。
如果你不害怕直接与redis通信,你可以在阅读时处理KEYS *
的批量回复,以加快速度并节省内存。