您的位置:首页 > 数据库 > Redis

Redis的学习之管道

2015-04-03 12:47 197 查看
Redis的工作模式:请求响应式

Redis是一个使用客户端/服务器模型(也被称作请求/响应协议)的TCP服务器。

这说明通常来讲一个一个请求的实现有以下步骤:

1.客户端发送请求到服务器,并从socket中以堵塞的方式读取服务器的响应数据。

2.服务器对发动的命令进行处理并把响应数据发回客户端。

环路时间RTT:

从客户端请求数据开始到收到服务器的响应数据截止的时间。

管道解决的问题描述:

当客户端需要一次发送很多请求时(比如一次向一个List添加很多元素,或者向一个数据库添加很多Key),这个环路时间会对性能造成非常大的影响。如果环路时间是250毫秒(在网络连接非常慢的情况下),即使服务端能每秒处理10万个请求,我们一秒最大也只能处理四个请求。

即使我们用的是本地回环接口,本地环路时间会短得多(比如在我本机上用ping测试是0.044毫秒),但是如果你要一次进行大量写操作,这个时间依然不少。

Redis的管道:

一个请求/响应服务器能够做到在客户端还没有读取上个返回值的时候就处理新的请求。通过这种方式客户端就可以在不获取每次请求的响应的情况下给服务端一次发送多个命令,并在未来的某个时间一次获得这些所有的响应。这样我们不再每次调用都产生RTT的花销,所有命令加起来只产生一次RTT花销。

使用管道要注意:

当客户端一下子发送多条请求命令时,服务器会将这些所有命令的请求放入队列,这样会带来额外的内存开销。为了减少内存开销,我们最好规定一个命令数的上限,比如10000条,这样内存开销的上限就是这10000条命令的响应值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: