Redis - Lua脚本

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命令来或得相同的脚本执行效果。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 记得上半年读书,看到Lua脚本的时候就跳过了。因为项目用不到,也因为自己技术视野不够宽阔。后来看到一篇介绍秒杀技术...
    packet阅读 842评论 0 3
  • 各位,如何定义幸福呢?你认为自己幸福吗? 2月9日以前,真心觉得这个“标题党”让我很难有阅读下去...
    王孟佳_4186阅读 380评论 0 0
  • 首先感谢一直以来关注我的粉丝朋友们,我是不是应该截张图纪念一下几位,得十分感谢长久以来的关注,面对你们的关心,我除...
    希醒阅读 226评论 0 1
  • 近日,中国内地最具实力男歌手海阔和女歌手棋子即将一起推出单曲《一生只爱这一回》。这首歌曲是一首男女对唱歌曲,以男声...
    江苏孙放文化阅读 410评论 0 0
  • 既然爱,为什么不说出口,有些东西失去了,就在也回不来了! 人最软弱的地方,是舍不得。舍不得一段不再精采的感情,舍不...
    爱你的wo阅读 350评论 0 0