我正在尝试使用Mongo中的数据向Tornado应用程序添加缓存。我使用Redis作为共享缓存存储。
由于龙卷风是一个异步框架,我正在考虑使用Redis的异步客户端,它使用龙卷风的ioloop从Redis服务器获取数据。现有的解决方案都不是很成熟,我听说这些客户的吞吐量都不好。
所以我的问题是,如果我使用像pyredis这样的同步Redis客户端,它会对我的应用程序的性能产生负面影响吗?
我的意思是,考虑到Redis实例位于同一个局域网上,redis命令的延迟非常小,是否阻塞是否重要?
答案 0 :(得分:1)
如果没有在您的环境中并排对两种方法进行基准测试,确实很难说,但快速网络上的redis可能足够快,以至于同步驱动程序在正常条件下获胜(或者可能不是。我个人并不熟悉不同redis驱动程序的性能。)
异步驱动程序的最大优点是它可以更优雅地处理redis服务器或网络的中断。虽然redis遇到了问题,但它可以做其他不依赖redis的事情。当然,如果您的整个网站依赖于redis,那么在这种情况下您可能没有太多其他工作。这是FriendFeed的哲学。当我们最初编写Tornado时,我们使用了同步memcache和mysql驱动程序,因为这些服务在我们的控制之下,我们可以指望它们很快,但我们使用异步HTTP客户端作为外部API,因为它们不太可预测。