您如何*正确地*从tornado中查询Redis?

我很好奇,建议从Tornado中查询Redis(或与此相关的任何数据库)的推荐方法是什么。

我已经看到了一些示例,例如https://gist.github.com/357306,但它们似乎都在使用阻塞对Redis的调用。

我的理解是,为了避免停顿Tornado,我需要使用非阻塞数据库库,例如为Twisted开发的库。

我错了吗?应该怎么做?

回答:

您可以从此演示开始,看看如何使用tornado-

redis客户端开发简单的公共聊天应用程序。

异步客户端的主要优点是您的服务器可以在等待Redis服务器响应的同时处理传入请求。但是,Redis服务器是如此之快,以致在大多数情况下,在Tornado应用程序中设置异步回调的开销比请求等待Redis服务器响应所花费的时间更多。

使用异步客户端,您可以尝试同时向Redis服务器发送多个请求,但是Redis服务器是单线程的(就像Tornado服务器一样),因此它将一一响应这些请求,然后您几乎一无所获。而且,实际上,只要有管道和MGET

/ MSET之类的命令,您就不必同时向同一Redis服务器发送多个Redis命令。

当您使用多个Redis服务器实例时,异步客户端具有一些优点,但是我建议使用同步(redis-

py)客户端和一个代理,例如twemproxy或该代理(后者支持管道和MGET / MSET命令)。

。只需Redis为应用程序连接到的每个Redis数据库创建一个对象实例。

以上是 您如何*正确地*从tornado中查询Redis? 的全部内容, 来源链接: utcz.com/qa/398362.html

回到顶部