利用Batch(mget,mset之类的单条命令)处理多个key的命令,一次性将多个命令提交过去,极大的较少了在网络传输方面带来的损耗
PipeLine管道
Pipeline可以从client(客户端)打包多条命令后一起发出,redis服务端会在处理完多条命令后将多条命令的处理结果打包到一起返回给客户端,与单条命令顺序执行相比,使用Pipeline极大的减少了客户端与redis server的通信次数,从而降低往返延时的时间。 pipeline选择客户端缓冲,multi选择服务端缓冲;multi/exec可以保证原子性,而pipeline不保证原子性。为了保证多条命令组合的原子性,Redis提供了简单的事务以及集成Lua脚本来解决这个问题.
优点
Pipeline 通过改变请求响应的顺序,减少了RTT
减少了IO调用次数(IO调用涉及到用户态到内核态之间的切换)
需要控制Pipeline的大小,否则会消耗Redis的内存
RTT,round trip time, 即往返时间,指的是一个请求响应的时间。redis的通信协议是基于tcp的请求/响应协议,在发送一个请求,读取到响应后才可以发送下一个请求,整个来回的时间即为RTT。