本文介绍: redis扩展应用 luapipelinelua的。EVAL和EVALSHA。

一  redis扩展应用 lua

redis lua脚本语法

①  什么脚本缓存

redis '缓存lua脚本'

说明重启redis,脚本缓存会'丢失'

下面讲解 'SCRIPT ...' 系列

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

redis中缓存Lua 脚本

语法: EVALSHA sha1 numkeys 'key [key ...]'  'arg [arg ...]'

'案例'讲解

⑧  EVAL和EVALSHA区别

1、eval执行的脚本'不从缓存里拿[一次性消耗品]'

2、而'evalsha'执行的脚本'从缓存'拿,后跟'sha1校验码'从服务器'缓存里拿'

⑨  pipeline和lua区别


 

原文地址:https://blog.csdn.net/wzj_110/article/details/134614449

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_22610.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注