redis '缓存lua脚本'
说明: 重启redis,脚本缓存会'丢失'
下面讲解 'SCRIPT ...' 系列
② LOAD
语法:SCRIPT LOAD 'lua代码' -->载入一个脚本,只是'预加载','不执行'
思考1: 何时'加载'? --> evalsha
SCRIPT LOAD "redis.call('SET', KEYS[1], ARGV[1]);
redis.call('EXPIRE', KEYS[1], ARGV[2]); return 1;"
SCRIPT LOAD 加载'脚本',并得到'sha1值'
③ EXISTS
作用:
1、给定'一个或多个脚本'的 SHA1 校验和
2、返回一个包含 '0 或 1' 的列表,表示'校验和'所'指定的脚本'是否已经被保存'在缓存'当中
④ KILL
这个命令主要用于终止'运行时间过长'的脚本,比如一个因为 BUG 而发生无限 loop 的脚本,诸如此类.
语法: SCRIPT KILL 即可 --> '无多余'的参数
lua脚本的'最大运行'时间:是需要被'严格限制',单位是'毫秒':lua-time-limit 5000 '[5秒]'
1、lua脚本'死'循环
备注: 'redis6'+ 支持'多线程'
2、Script Kill 的'原理'
⑤ FLUSH
命令'格式':SCRIPT FLUSH
作用: '清除' redis服务端 '所有 Lua 脚本缓存'
⑥ DEBUG
redis 从 '3.2.0' 开始支持 Lua debugger,可以加'断点、print 变量信息、调试'正在执行代码
# 进入 debuge 模式
redis-cli --ldb --eval ./wzj.lua key1 key2 , arg1 arg2 arg3
⑦ EVALSHA
语法: EVALSHA sha1 numkeys 'key [key ...]' 'arg [arg ...]'
'案例'讲解
⑧ EVAL和EVALSHA区别
1、eval执行的脚本'不从缓存里拿[一次性消耗品]'
2、而'evalsha'执行的脚本'从缓存'拿,后跟'sha1校验码'从服务器'缓存里拿'
原文地址:https://blog.csdn.net/wzj_110/article/details/134614449
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_22610.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。