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

一   redis 的扩展应用 lua

redis加载lua脚本文件

①  调试lua脚本

redis-cli 通过管道 --pipe 快速导入数据到redis中

②  预加载方式

1、'错误'方式

redis运维(二十一)redis 的扩展应用 lua(三)_第1张图片

2、'正确'方式

redis运维(二十一)redis 的扩展应用 lua(三)_第2张图片

++++++++++  "案例讲解"  ++++++++++

redis运维(二十一)redis 的扩展应用 lua(三)_第3张图片

redis运维(二十一)redis 的扩展应用 lua(三)_第4张图片

③  一次性加载

执行'命令': 

  redis-cli -a '密码' --eval Lua脚本路径 'key [key …]' ,  'arg [arg …]'
 
如:redis-cli -a 123456 --eval ./wzj.lua name , wzj lisi 1

注意: 

 1、'–eval' 是选项,'而不是'redis命令模式中的"eval"

 2、脚本路径后 '紧跟' key [key …],相比命令行模式,'少了numkeys'这个'key数量值'

 3、key [key …] 和 arg [arg …] 之间的" , ",英文'逗号前后'必须有'空格',否则死活'报错'

redis运维(二十一)redis 的扩展应用 lua(三)_第5张图片

redis运维(二十一)redis 的扩展应用 lua(三)_第6张图片

二   注意事项

④  全局变量  使用local局部变量

redis运维(二十一)redis 的扩展应用 lua(三)_第7张图片

⑤  脚本缓存

redis运维(二十一)redis 的扩展应用 lua(三)_第8张图片

⑥  纯函数脚本

redis运维(二十一)redis 的扩展应用 lua(三)_第9张图片

备注: 像在redis的lua脚本中执行'os.time()会报错','不支持os类库'

⑦  最大执行时间

1)lua脚本'不宜'编写一些过于'复杂耗时'的逻辑,保证'lua脚本的效率',不要'影响其它客户端'

2)务必保证lua脚本的'健壮性',因为lua脚本'执行异常时',已经执行的逻辑是'不会回滚'的

redis运维(二十一)redis 的扩展应用 lua(三)_第10张图片

⑧  管道上下文中的EVALSHA

redis运维(二十一)redis 的扩展应用 lua(三)_第11张图片

⑨   redis中可使用的lua库

redis运维(二十一)redis 的扩展应用 lua(三)_第12张图片

⑩  redis-cli执行lua脚本

redis运维(二十一)redis 的扩展应用 lua(三)_第13张图片

你可能感兴趣的:(redis,redis,运维,lua)