当前位置: 代码迷 >> 综合 >> redis读书笔记一 Pipelining
  详细解决方案

redis读书笔记一 Pipelining

热度:34   发布时间:2023-10-13 18:45:31.0

1、为什么要使用pipelining

redis client 向redis server每次发送请求时,client需要收到redis server响应后才能继续发送下一个请求,而每个请求过程中,client需要先把数据传到server, 然后server再把数据传回client,这两个过程都需要时间,网络状态越差,时间越长,这个时间叫RTT (Round Trip Time)。

而redis支持client发送请求后可以不必等server响应返回,就继续发送下一个请求。最后一次性收到所有请求的响应。这样就可以节省多个RTT的时间,而只需要一次RTT。

当需要一次发送多个请求时,比如要往一个list中push多个数据,或向一个database中填充多个key时,此时就可以使用pipelining。

2、使用pipelining的注意事项

当服务器收到pipelining的请求时,会把一次pipelining的多个请求放到内存中的队列中进行处理,保证按顺序处理请求。所以一次pipelining包含的请求数不能太大,要根据redis的处理能力,发送合理的pipelining请求数量,这样既不会影响处理速度,也可以节省队列所需的最大的内存。

3、Pipelining VS Scripting

当需要一次执行的操作中,既包含读请求又包含对读请求结果的处理时,然后把处理结果写入redis时,就只能使用Scripting。因为Pipelining必须等这次Pipelining返回后,才能对返回结果处理。