### 什么是流水线
![](https://box.kancloud.cn/788822e24e29bc9330a40401945bf9bb_724x430.png)
![](https://box.kancloud.cn/4abcd092a6db43e2014fde54d668edb3_705x435.png)
将多次命令进行打包,几种计算,一起返回,减少网络开销,这就是流水线 .
![](https://box.kancloud.cn/cce1ac8b2b054bae252b5f2978c01bee_687x454.png)
对于Redis来说,网络环境是最大的瓶颈 .所以要减少网络的开销 .
![](https://box.kancloud.cn/8bbd6dd14dad523b888380e222bc9d25_756x392.png)
从下图可以看出,可能执行一次Redis命令只有几微秒,可是在网络传输中要大大加长了时间 . 如果我们想做一个批量操作,但是没有使用pipline功能,而是使用传统类似for循环这样的方法,那我们Redis使用的效率不会很高.
![](https://box.kancloud.cn/c4962b925ef732b5e336b2268ad55212_821x448.png)
### 客户端实现
### 与原生操作对比
原生M操作
![](https://box.kancloud.cn/ec28d39b18361054207d5e4189d098bb_747x367.png)
使用pipline
![](https://box.kancloud.cn/8097c48fa4afc505d72699b0b4badd57_794x371.png)
### 使用建议
1. 注意每次pipline携带数据量
2. pipline每次只能作用在一个Redis节点上 .
3. M操作与pipline区别 .
### 自我理解
pipline和事务的区别,事务是将所有命令一次次的发送到redis服务器上,然后一次执行,执行过程中不会被其他命令打断。但是pipline是将所有命令一次发送到redis服务器上,操作子命令的时候会被其他客户端的命令插入执行。
- Redis简介
- 简介
- 典型应用场景
- Redis安装
- 安装
- redis可执行文件说明
- 三种启动方法
- Redis常用配置
- API的使用和理解
- 通用命令
- 数据结构和内部编码
- 单线程
- 数据类型
- 字符串
- 哈希
- 列表
- 集合
- 有序集合
- Redis常用功能
- 慢查询
- Pipline
- 发布订阅
- Bitmap
- Hyperloglog
- GEO
- 持久化机制
- 概述
- snapshotting快照方式持久化
- append only file追加方式持久化AOF
- RDB和AOF的抉择
- 开发运维常见问题
- fork操作
- 子进程外开销
- AOF追加阻塞
- 单机多实例部署
- Redis复制原理和优化
- 什么是主从复制
- 主从复制配置
- 全量复制和部分复制
- 故障处理
- 开发运维常见问题
- Sentinel
- 主从复制高可用
- 架构说明
- 安装配置
- 客户端连接
- 实现原理
- 常见开发运维问题
- 高可用读写分离
- 故障转移client怎么知道新的master地址
- 总结
- Sluster
- 呼唤集群
- 数据分布
- 搭建集群
- 集群通信
- 集群扩容
- 集群缩容
- 客户端路由
- 故障转移
- 故障发现
- 故障恢复
- 开发运维常见问题
- 缓存设计与优化
- 缓存收益和成本
- 缓存更新策略
- 缓存粒度控制
- 缓存穿透优化
- 缓存雪崩优化
- 无底洞问题优化
- 热点key重建优化
- 总结
- 布隆过滤器
- 引出布隆过滤器
- 布隆过滤器基本原理
- 布隆过滤器误差率
- 本地布隆过滤器
- Redis布隆过滤器
- 分布式布隆过滤器
- 开发规范
- 内存管理
- 开发运维常见坑
- 实战
- 对文章进行投票
- 数据库的概念
- 启动多实例