Redis学习笔记——第20章 Lua脚本
第20章 Lua脚本
20.1 创建并修改Lua环境
20.1.1 创建Lua环境
服务器创建一个新的基本的Lua环境
20.1.2 载入函数库
修改Lua环境,载入一些库函数
20.1.3 创建redis全局表格
全局变量,支持在Lua脚本中执行redis命令
20.1.4 使用redis自制随机函数来替换Lua随机函数
20.1.5 创建排序辅助函数
20.1.6 创建redis.pcall函数的错误报告辅助函数
20.1.7 保护Lua全局环境
可修改全局变量,但不可以添加或删除
20.1.8 将Lua环境保存在redisServer的Lua中
20.2 Lua环境协作组件
20.2.1 伪客户端
Lua脚本通过redis.call或redis.pcall执行redis命令,redis会创建伪客户端用于执行Lua脚本中的redis命令
20.2.2 lua_scripts字典
key:Lua脚本SHAI校验和
value:Lua脚本
(载入过的Lua脚本会被保存)
20.3 EVAL命令的实现
20.3.1 定义脚本函数
将脚本用Lua环境中的函数定义,函数名为SHAI校验和
20.3.2 将脚本保存到lua_scripts字典
20.3.3 执行脚本函数
20.4 Evalsha命令的实现
通过校验和查找脚本
20.5 脚本管理命令的实现
20.5.1 script flush
重建脚本字典及重建lua环境
20.5.2 script exists
检查校验和是否存在于lua脚本字典中
20.5.3 script load
创建对应lua函数并存入脚本字典,但与Eval不同,他不会执行
20.5.4 script kill
在配置了超时钩子时,若脚本执行已经超时,则会检测,是否有script kill或者shutdown命令,若有则执行
20.6 脚本复制
主服务器会把脚本传播到从服务器并执行