如果我的脚本运行时Elasticache决定重新分片怎么办?

问题描述 投票:0回答:1

我有一些触碰了几个按键的脚本。如果我的脚本运行时Elasticache决定重新分片怎么办?它会在移动基础键之前等待脚本完成吗?还是我应该假设情况并非如此,并在设计这种边缘情况时设计我的应用程序?

一个示例是一个脚本,该脚本一次增加2个键。我可能会收到“集群错误”,这意味着出了点问题,我不得不再次执行我的脚本(并且可能最终将一个键增加两次,而另一个键增加一次)

redis amazon-elasticache redis-cluster
1个回答
0
投票

假设您正在谈论Lua脚本,只要您在参数中传递键(并且在脚本中未进行硬编码),您就应该很好。这将是全有或全无。如果您不使用Lua脚本-请考虑这样做

来自EVAL command

执行前必须分析所有Redis命令以确定该命令将对哪些键进行操作。为了做到这一点对于EVAL,必须显式传递密钥。这在许多方面都很有用,但特别是要确保Redis Cluster可以将您的请求转发给适当的群集节点。

来自AWS ElastiCache - Best Practices: Online Cluster Resizing

重新分片期间,我们建议以下内容:

  • 避免使用昂贵的命令–避免运行任何计算和I / O密集操作,例如KEYS和SMEMBERS命令。我们建议使用此方法,因为这些操作会增加集群,并影响集群的性能。而是使用SCAN和SSCAN命令。

  • 遵循Lua最佳实践–避免长时间运行Lua脚本,并且始终预先声明Lua脚本中使用的键。我们推荐这种方法确定Lua脚本未使用跨槽命令。确保Lua脚本中使用的键属于同一插槽。

© www.soinside.com 2019 - 2024. All rights reserved.