zoukankan      html  css  js  c++  java
  • Redis Pipeline

    Redis提供了批量操作命令(例如mget、 mset等) , 有效地节约RTT。 但大部分命令是不支持批量操作的, 例如要执行n次hgetall命令, 并没有mhgetall命令存在, 需要消耗n次RTT。

    Pipeline(流水线) 机制能改善上面这类问题, 它能将一组Redis命令进行组装, 通过一次RTT传输给Redis, 再将这组Redis命令的执行结果按顺序返回给客户端。

    Redis命令真正执行的时间通常在微秒级别, 所以才会有Redis性能瓶颈是网络这样的说法。

    性能

    Pipeline执行速度一般比逐条执行要快。
    客户端和服务端的网络延时越大, Pipeline的效果越明显。

    使用Pipeline执行n条命令模型

    原生批量命令与Pipeline对比

    ·原生批量命令是原子的, Pipeline是非原子的。
    ·原生批量命令是一个命令对应多个key, Pipeline支持多个命令。
    ·原生批量命令是Redis服务端支持实现的, 而Pipeline需要服务端和客户端的共同实现。

    最佳实践

    Pipeline虽然好用, 但是每次Pipeline组装的命令个数不能没有节制, 否则一次组装Pipeline数据量过大, 一方面会增加客户端的等待时间, 另一方面会造成一定的网络阻塞, 可以将一次包含大量命令的Pipeline拆分成多次较小的Pipeline来完成。

    Pipeline只能操作一个Redis实例, 但是即使在分布式Redis场景中, 也可以作为批量操作的重要优化手段。

  • 相关阅读:
    call和apply的区别
    淘宝镜像(cnpm)的安装和使用
    文件包含漏洞
    vue简单的日历
    微信小程序(mpvue)—解决视频播放bug的一种方式
    vue 异步组件
    vuex的学习笔记
    vue2.0 添加监听滚动事件
    jquery tmpl生成导航
    vue 控制视图
  • 原文地址:https://www.cnblogs.com/MacoLee/p/13985855.html
Copyright © 2011-2022 走看看