0
点赞
收藏
分享

微信扫一扫

树莓派NAS系统搭建教程:使用Flask和SQLite实现HTTP/HTTPS文件管理(代码示例)

求阙者 2024-08-05 阅读 17

第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 脚本复制

主服务器会把脚本传播到从服务器并执行

举报

相关推荐

0 条评论