巧用 Redis pipeline 命令
|
lo,大家好,我是阿粉~ 最近阿粉接到了一个业务需求,需要开发一个业务接口,批量删除 Redis 中数据。 这个功能点其实很简单,只要让外部传入需要删除键信息,然后在接口内部遍历调用删除命令即可。 按照这个思路,功能很快就开发完成,然后顺利的上线。 上线之后,运行一段时间,调用业务方反馈,当要删除的数据很多的时候,这个接口响应时间就比较长,然后希望我们这边优化一下,降低响应时间。 那优化办法其实有很多,比如使用多线程删除等,不过这一次并没有采用这个,最终使用了 Redis pipeline(管道)命令进行了优化。
所以今天这篇文章就给大家介绍一下 Redis pipeline 命令,以及相关原理 需要经过四个流程:
Redis 的客户端与服务可能部署在不同的机器上,这里我们假设 Redis 客户端部署在北京,而 Redis 服务端在广州,两地的网络延时为 50ms。 一次 Redis 命令,1 与 4 这两个流程就需要耗费 100ms, 而 2 与 3 在由于是在 Redis 服务端执行,执行速度会很快,可以忽略不计。 此时客户端如果需要执行 N 次 Redis 命令,我们就需要耗费 2N*100ms 时间,执行命令越多,耗时越长。 这就是文章开头 Redis 删除多个命令比较慢的主要原因。 Redis pipeline 流水线执行命令那如何解决这类问题了? 解决办法有三种,第一种利用多线程机制,并行执行命令,提高执行速度。 第二种,调用 mget 这类命令,这类命令可以一次操作多个键,Redis 服务端收到命令之后,将会批量执行。 但是 mget这类批量命令毕竟是少数,很多情况下我们没办法直接使用,就像我们上面的例子。 这样的话,只能使用最后一种办法,使用 Redis pipeline命令。 开启 Redis pipeline 之后,再执行 Redis 的其他命令,命令将不会发送给服务端,而是先暂存在客户端,左后等到所有命令都执行完,然后再统一发送给服务端。 服务端会根据发送过来的命令的顺序,依次运行计算。 (编辑:漯河站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

