当前位置: 首页 > article >正文

redis运维(二十)redis 的扩展应用 lua(二)

一  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的区别


 


http://www.kler.cn/a/151932.html

相关文章:

  • Windows系列:windows2003-建立域
  • Python streamlit指南,构建令人惊叹的可视化Web界面!
  • python-元组和列表的异同
  • Linux下将Java项目(Jar包)打包成服务
  • 删除list中除最后一个之外所有的数据
  • 非空断言,
  • 五种多目标优化算法(MSSA、MOAHA、MOPSO、NSGA3、NSGA2)求解微电网多目标优化调度(MATLAB)
  • 交叉熵损失函数(Cross-Entropy Loss Function)
  • 如何在VS2022上的MFC项目中操作Excel(VS2010、VS2012、VS2015、VS2017、VS2019使用方法一样)
  • RabbitMQ之延迟消息
  • Python与设计模式--备忘录模式
  • 三、ts高级笔记,
  • Dynamsoft Barcode Reader教程:如何使用Dynamsoft Java条形码阅读器扫描多个条形码
  • 光伏设计软件:创新工具,提升设计效率与质量
  • Git分支合并导致文件异常
  • Python基础语法之学习占位符
  • 每日OJ题_算法_双指针⑦力扣15. 三数之和
  • C++ 学习之函数成员指针的一个小细节
  • 【数据清洗 | 数据规约】数据类别型数据 编码最佳实践,确定不来看看?
  • Python 异常处理(try except)