Redis lua_client 伪客户端生命周期

在《Redis 设计与实现》一书中,第13章关于伪客户端的描述:

Lua脚本的伪客户端:服务器会在初始化时创建负责执行Lua脚本中包含的Redis命令的伪客户端,并将这个伪客户端关联在服务器状态结构的lua_client属性中。lua_client伪客户端在服务器运行的整个生命期中会一直存在,只有服务器被关闭时,这个客户端才会被关闭。

AOF文件的伪客户端:服务器在载入aof文件时,会创建用于执行AOF文件包含的redis命令的伪客户端,并在载入完成之后,关闭这个伪客户端。

问题:为什么lua_client伪客户端在服务器运行的整个生命期中会一直存在?

在查了些资料后,个人关于 lua_client 的生命周期的理解是这样的:

版本:自2.6.0起可用。

时间复杂度:取决于执行的脚本。

使用Lua脚本的好处:

  • 减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延。
  • 原子操作。redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本的过程中无需担心会出现竞态条件,无需使用事务。
  • 复用。客户端发送的脚步会永久存在redis中,这样,其他客户端可以复用这一脚本而不需要使用代码完成相同的逻辑。

(以上参考来源:Redis如何使用lua脚本实例教程-面圈网

因为Redis使用串行化的方式来执行Redis命令,所以在任何特定时间里,最多都只会有一个脚本能够被放进Lua环境里面运行,因此,整个Redis服务器只需要创建一个Lua环境即可。(第20章 Lua脚本)

lua_client伪客户端作为Lua环境的协作组件之一,主要功能就是处理Lua脚本中包含的所有Redis命令。因为脚本执行可能是个频繁的操作,当需要的时候不必每次执行都重新创建客户端,所以就会一直保留,直到服务器关闭。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值