Redis学习之旅 管道/脚本/过期/事务
本文尝试将 管道、脚本、过期和事务一起归纳一下
管道
我们都知道,一个命令通常都是由一个客户端通过网络连接发送到某个服务,由服务做出响应并给出回复,相对于Redis的快速,网络的传输速度往往是制约Redis发挥最大功效的因素,因此Redis设计了管道的概念
-
常规的使用,就是由客户端 1.通过网络发送请求-2.Redis处理计算-3.通过网络返回结果,所有的命令都是这样123-123-123式的进行处理,性能的消耗基本上都消耗在了网络传输上,在此基础上,设计了管道,可以一次性传输一批命令,由redis一起处理后,再统一返回
-
使用管道后,命令的处理方式可能就变成 1.传输10条命令-2.做十次计算-3.返回结果,通过管道技术,将网络的请求减少,提升处理的速度
-
优点:版本支持早,基本上任何版本的redis都可以直接运行管道,提升性能
-
缺点:不支持批量操作时,使用运算中间产生的结果,即语句间需要相互无关
Lua脚本
管道技术不支持使用上一条运算的结果的情况,可以使用lua脚本进行解决,Lua脚本可以理解为一个原子性的语句集合,在脚本执行中不会插入其他线程输入的命令或者脚本,因此对于其他请求线程来说,要么脚本处于未执行状态,要么处于执行完毕状态
因此这个特性决定了,你需要熟悉每个命令可能的开销,并尽量去规避一些特别缓慢的操作,因为这会引起