-
Redis2.6版本引入对Lua脚本的支持,可以在Redis客户端使用Lua脚本指定多个Redis命令,然后直接在服务端原子地执行这多个Redis命令。
-
执行命令为:EVAL或者EVALSHA,如下:
127.0.0.1:6379> EVAL "return redis.call('DBSIZE')" 0 (integer) 94716 -
lua脚本相关的其他命令:SCRIPT FLUSH/EXISTS/LOAD/KILL
-
Redis对lua支持的内部实现:lua使用Redis提供的redis.call, redis.pcall来执行Redis命令,如上面的例子。在Redis内部集成了一个lua环境,在lua环境中包含一个Redis伪客户端用于执行Redis命令。lua脚本将redis.call或redis.pcall中包含的命令发送给这个伪客户端,伪客户端将命令传给命令执行器执行该命令。
-
EVAL命令内部实现:为脚本创建函数,将脚本保存到lua_scripts脚本字典中,执行该函数从而来执行脚本。
本文标题:Redis命令的原子执行:Lua脚本的支持
本文链接:https://blog.quwenai.cn/post/3246.html
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。






还没有评论,来说两句吧...