同步 Redis 调用是否会使龙卷风应用程序变慢



我正在尝试向Tornado应用程序添加缓存,并在Mongo中使用数据。我正在使用 Redis 作为共享缓存存储。

由于 tornado 是一个异步框架,我正在考虑为 Redis 使用异步客户端,它使用 tornado 的 ioloop 从 Redis 服务器获取数据。现有的解决方案都不是很成熟,我听说这些客户端的吞吐量不好。

所以我的问题是,如果我使用像 pyredis 这样的同步 Redis 客户端,它会对我的应用程序的性能产生负面影响吗?

我的意思是,考虑到 Redis 实例位于同一个 LAN 上,redis 命令的延迟非常小,它是否阻塞有关系吗?

如果不在您的环境中并排对这两种方法进行基准测试,很难确定,但快速网络上的 redis 可能足够快,以至于同步驱动程序在正常情况下获胜(也可能不是)。我个人不熟悉不同 redis 驱动程序的性能)。

异步驱动程序的最大优点是它能够更优雅地处理 redis 服务器或网络的中断。虽然 redis 遇到了问题,但它将能够做其他不依赖于 redis 的事情。当然,如果您的整个网站都依赖于 redis,那么在这种情况下您可能无能为力。这是FriendFeed的理念。当我们最初编写Tornado时,我们使用同步memcache和mysql驱动程序,因为这些服务在我们的控制之下,我们可以指望它们的速度很快,但是我们对外部API使用了异步HTTP客户端,因为它们不太可预测。

最新更新