没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Redis基础学习之管道机制详析基础学习之管道机制详析
主要给大家介绍了关于Redis基础学习之管道机制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使
用Redis具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
前言前言
Redis服务是一种C/S模型,提供请求-响应式协议的TCP服务,所以当客户端请求发出,服务端处理并返回结果到客户端,一般是以
阻塞形式等待服务端的响应,但这在批量处理连接时延迟问题比较严重,所以Redis为了提升或弥补这个问题,引入了管道技术:可以
做到服务端未及时响应的时候,客户端也可以继续发送命令请求,做到客户端和服务端互不干涉影响,服务端并最终返回所有服务端
的响应,这在促进原有C/S模型交互的响应速度上有了质的提高。
以下是对 Redis管道机制的一个学习记录
Pipeline简介简介
Redis客户端执行一条命令:
发送命令
命令排队
执行命令
返回结果
其中发送命令和返回结果可以称为 Round Trip Time (RTT,往返时间)。在Redis中提供了批量操作命令,例如mget、mset等,有效地
节约了RTT。但是大部分命令是不支持批量操作的。
为此Redis提供了一个称为管道(Pipeline) 的机制将一组Redis命令进行组装,通过一次 RTT 传输给 Redis,再将这些 Redis 命令的执行
结果按顺序传递给客户端。即使用pipeline执行了n次命令,整个过程就只需要一次 RTT。
对对Pipeline进行性能测试进行性能测试
我们使用redis-benchmark 对Pipeline进行性能测试,该工具提供了 -P 的选项,此选项表示使用管道机制处理 n 条Redis请求,默认值
为1。测试如下:
# 不使用管道执行get set 100000次请求
[root@iz2zeaf3cg1099kiidi06mz ~]# redis-benchmark -t get,set -q -n 100000
SET: 55710.31 requests per second
GET: 54914.88 requests per second
# 每次pipeline组织的命令个数 为 100
[root@iz2zeaf3cg1099kiidi06mz ~]# redis-benchmark -P 100 -t get,set -q -n 100000
SET: 1020408.19 requests per second
GET: 1176470.62 requests per second
# 每次pipeline组织的命令个数 为 10000
[root@iz2zeaf3cg1099kiidi06mz ~]# redis-benchmark -P 10000 -t get,set -q -n 100000
SET: 321543.41 requests per second
GET: 241545.89 requests per second
从上面测试可以看出,使用pipeline的情况下 Redis 每秒处理的请求数远大于 不使用 pipeline的情况。
当然每次pipeline组织的命令个数不能没有节制,否则一次组装Pipeline数据量过大,一方面会增加 客户端等待时间,另一方面会造成
一定的网络阻塞。
从上面的测试中也可以看出,如果一次pipeline组织的命令个数为 10000,但是它对应的QPS 却小于 一次pipeline命令个数为 100的。
所以每次组织 Pipeline的命令个数不是越多越好,可以将一次包含大量命令的 Pipeline 拆分为 多个较小的 Pipeline 来完成。
Pipeline关于关于RTT的说明的说明
在官网上有一段这样的描述:
资源评论
weixin_38704857
- 粉丝: 10
- 资源: 895
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功