(15)redis Pipeline详解

(15)redis Pipeline详解,第1张

redis客户端执行命令4个过程: 发送命令-〉命令排队-〉命令执行-〉返回结果

过程称为 Round trip time (简称RTT, 往返时间),mget mset有效节约RTT,但大部分命令(如hgetall,并没有mhgetall)不支持批量 *** 作,需要 消耗N次RTT ,pipeline解决

比逐条执行要快,特别是客户端与服务端的 网络延迟越大,体能越明显

原生批命令: 原子性 ,            pipeline: 非原子性

原生批命令: 一命令多个key    pipeline: 支持多命令(存在事务

原生批命令: 服务端 实现,     pipeline:服务端与客户端 共同完成

pipeline组装命令不能太多,不然数据量过大,增加客户端的等待时间,造成网络阻塞,可将 大量命令的拆分多个小pipeline命令:

redis提供 mset 、 mget 方法,但没提供 mdel 方法,如想实现,可借助pipeline

mset: 同时设置一个或多个 key-value 对。redis 127001:6379> MSET key1 value1 key2 value2 keyN valueN

1)获取jedis对象 (一般从连接池中获取)

2) 获取jedis对象 的pipeline对象

3)添加、执行指令

用pipeline提交所有 *** 作并返回执行结果:

为了保证pipeline原子性,redis提供了简单的事务。

1、redis的简单事务 :放multi和exec命令之间,multi代表事务开始,exec代表事务结束

2、停止事务discard:

3、命令错误,语法不正确,导致 事务不能正常结束

4、运行错误,语法正确,但 类型错误,事务可以正常结束

5、watch命令:用watch后, multi失效,事务失效

WATCH机制: 事务EXEC执行时,Redis检查被WATCH的key,只有被WATCH的key从 WATCH起始时至今没有发生过变更,EXEC才会被执行 ,变化则失败。

小结:redis提供简单事务,不支持事务回滚

使用Redis的脚本功能实现Redis中数据简单查询,有需要的朋友可以参考下。 在Redis的设计中,key是一切,对于Redis是可见的,而value对于Redis来说就是一个字节数组,Redis并不知道你的value中存储的是什么

以上就是关于(15)redis Pipeline详解全部的内容,包括:(15)redis Pipeline详解、如何批量插入redis hash、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9573591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存