gpt4 book ai didi

Redis 分片、流水线和往返

转载 作者:IT王子 更新时间:2023-10-29 05:57:27 27 4
gpt4 key购买 nike

假设在您的 Web 应用程序中,您需要调用多个 Redis 来呈现页面,例如获取一堆用户哈希。为了加快速度,您可以将 redis 命令包装在 MULTI/EXEC 部分,从而使用流水线,从而避免进行多次往返。但是你也想分片你的数据,因为你有很多数据和/或你想分布写入。那么流水线将不起作用,因为不同的键可能存在于不同的节点上,除非您清楚地了解应用程序的数据布局和基于角色而不是使用哈希函数的分片。那么,在不因联系许多服务器以完成“概念上独特”的工作而对性能造成太大影响的情况下,跨不同服务器分片数据的最佳实践是什么?我相信答案取决于正在开发的 Web 应用程序,我最终会运行一些测试,但了解其他人如何应对我提到的权衡会很有帮助。

最佳答案

MULTI/EXEC 和流水线是两种不同的东西。您可以在没有任何流水线的情况下执行 MULTI/EXEC,反之亦然。

如果您想同时进行分片和流水线操作,您需要将操作分组以流水线化每个 Redis 实例,然后为每个实例使用流水线操作。

这是一个使用 Ruby 的简单示例:https://gist.github.com/2587593

进一步提高性能的一种方法是在操作分组后并行化 Redis 实例上的流量(即,将操作分组,将它们并行发送到所有实例,等待所有实例的响应)。

这有点复杂,因为需要一个异步非阻塞客户端。为了获得最佳性能,应在客户端使用 C/C++。这可以通过使用 hiredis + 您选择的事件循环轻松实现。

关于Redis 分片、流水线和往返,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10514872/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com