美文网首页Java相关
Redis - Lua脚本

Redis - Lua脚本

作者: 万福来 | 来源:发表于2020-03-31 18:28 被阅读0次

Redis - Lua脚本

  • Redis服务器在启动时,会对内嵌的Lua环境执行一系列修改操作,从而确保内嵌的Lua环境可以满足Redis在功能性、安全性等方面的要求。
  • Redis服务器专门使用一个伪客户端来执行Lua脚本中包含的Redis命令。
  • Redis使用脚本字典来保存所有被eval命令执行过,或者被script load命令载入过得lua脚本,这些脚本可以用于实现script exists命令,以及实现脚本复制功能。
  • eval命令为客户端输入的脚本在lua环境中定义一个函数,并通过调用这个函数来执行脚本。
  • evalsha命令通过直接调用lua环境中已经定义的函数来执行脚本。
  • script flush命令会请客服务区lua_scripts字典中保存的脚本,并重置lua环境。
  • script exists命令接收一个或多个SHA1校验和为参数,并通过检查lua_scripts字典来确认校验和对应的脚本是否存在。
  • script load命令接收一个lua脚本为函数,为该脚本在lua环境中创建函数,并且脚本保存到lua_scripts字典中。
  • 服务器在执行脚本之前,会为lua环境设置一个超时处理钩子,当脚本出现超时运行情况时,客户端可以通过向服务器发送script kill命令来让钩子停止正在执行的脚本,或者发送shutdown masave命令来钩子关闭整个服务器。
  • 主服务器复制eval、script flush、script load 三个命令的方法和复制普通redis命令一样,只要将相同的命令传播给从服务器就可以。
  • 主服务器在复制evalsha命令时,必须确保所有从服务器都已经载入了evalsha命令指定的sha1校验和所对应的lua脚本,如果不能确保这一点,主服务器会将evalsha命令转换成等效的eval命令,并通过传播eval命令来或得相同的脚本执行效果。

相关文章

网友评论

    本文标题:Redis - Lua脚本

    本文链接:https://www.haomeiwen.com/subject/xodguhtx.html