博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis管道
阅读量:6445 次
发布时间:2019-06-23

本文共 654 字,大约阅读时间需要 2 分钟。

redis单个请求与批量操作对比

  Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。 这意味着通常情况下一个请求会遵循以下步骤: ● 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。 ● 服务端处理命令,并将结果返回给客户端。 所以在大批量操作数据时,很容易消耗IO,导致代码性能差,执行时间长。   Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。请求流程对比如下图:

管道的特点

  pipeline并不是原子性的,中间可能会存在部分失败的情况,也就是说不能保证每条命令都能执行成功,这个是需要注意的,如果需要每条命令都执行成功,我们在批量执行过程中需要监控执行数量和返回的成功数量是否一致。   同时,当一次性进行大量的数据批量操作时,由于数据量过大,导致redis执行超时或其他的情况,所以这块最好事先测试自己的数据大小,决定多少数据适合批量一次性操作,类似采用分页批量操作。

管道适用场景

  pipeline适合于什么样的场景使用呢?一般是对业务场景不需要实时性和准确性的系统,保证大部分操作成功即可。如果想让操作一定成功,需要一定检测和补偿机制,这里补偿机制一般是根据批量操作的返回的状态和成功数量和批量操作的对比来进行补偿,如果有部分失败,就转向单个redis请求操作,但是此处需要做好监控,避免批量全部失败,降级为单个执行,这样性能损耗将更大,这是需要极度避免的。

转载地址:http://wwvwo.baihongyu.com/

你可能感兴趣的文章
Ajax
查看>>
Spring3 MVC请求参数获取的几种方法
查看>>
[物理学与PDEs]第2章习题1 无旋时的 Euler 方程
查看>>
快速复习正则表达式
查看>>
jquery 与其他库冲突解决方案
查看>>
ny82 迷宫寻宝(一) map+queue
查看>>
【转】使用genstring和NSLocalizedString实现App文本的本地化
查看>>
[51单片机] EEPROM 24c02 [读取存储多字节]
查看>>
cocos2d-x项目101次相遇:使用触摸事件移动 精灵
查看>>
[再寄小读者之数学篇](2014-05-29 单调函数的一个充分条件)
查看>>
RDD的依赖关系
查看>>
Android开发学习---使用Intelij idea 13.1 进行android 开发
查看>>
AddChild
查看>>
Android的移动存储之SharedPreferences
查看>>
padding与margin的差别
查看>>
Icehouse 创建Instance代码分析
查看>>
iOS开发多线程篇—GCD介绍
查看>>
单元测试 逃不开的Done 与约定
查看>>
解决parseSdkContent failed java.lang.NullPointerException错误
查看>>
正确的 zip 压缩与解压代码
查看>>