redis pipline

使用背景

项目中需要使用单redis实例存储千万级别的数据,当时认为开多线程存储能够提高执行速度,开了10个线程不停的存储每一条数据。结果运行速度龟速,加大线程数还是无果。

redis 单线程

官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!)。
看到这里应该就能够理解为什么不断增加处理线程数,也不能加快运行速度了。

  • redis本身就是单线程,client再多,最终也只能单线程执行
  • redis主要瓶颈在于IO操作

解决方案

  • 单线程的方式是无法发挥多核CPU性能,可以通过在单机开多个Redis实例来完善
  • 使用 pipline

重点说一下pipline
pipline的原理也比较简单,就是将一大堆的命令打包成一个原子操作,一次性传递给redis让其顺序执行,只会存在命令全部成功,或者全部失败。

为什么pipline会比拆成每一条小命令执行要快呢?

原因就是IO操作,每一条小命令执行时client与redis都要进行网络连接,传输命令,等待执行,传输结果,释放连接这样的过程.redis执行速度是很快的,大部份时间都耗在网络上了。

而pipline是一次性传输一个命令集,减少了大量的网络操作。

最终项目使用pipline解决该性能问题

转载于:https://www.cnblogs.com/migoo/p/10055428.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值