redis使用lua

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis使用lua相关的知识,希望对你有一定的参考价值。

参考技术A

redis中执行lua可以通过两种方式:

第一种是将lua脚本或命令直接使用redis执行,第二种相当于把脚本或命令保存到redis中,然后使用一串sha码调用(可以理解为调用函数)

例子(在redis中执行):

输出:

这里传入的key个数为1,所以redis是key而world是参数

这个操作相当于把脚本加载到redis,得到一个SHA1的校验和,然后使用这个SHA1码来调用对于的Lua脚本,避免每次去发送Lua脚本。

例子:

执行evalsha

如:

redis提供了几个命令来管理脚本

用于将Lua脚本加载到redis内存中

用于判断sha1值是否已经加载到redis内存中

返回个数

用于清除redis内存已经加载的所有脚本

用于杀掉正在执行的Lua脚本

如果Lua脚本比较耗时,甚至Lua脚本存在问题,那么此时Lua脚本的执行会阻塞redis,直到脚本执行完毕或者外部干预将其结束

有一点需要注意,如果Lua脚本正在执行写操作, script kill 命令不会生效,这时只能等待脚本执行结束,或使用 shutdown save 停掉redis服务

可参看 redis官方文档

有两种方式可以调用

这两种方法都可以调用,区别是call()方法是遇到就停止执行后面的内容并直接返回错误,而pcall遇到异常会忽略掉继续执行

其他命令可参看文档这里不赘述

一个使用Lua脚本执行redis scan命令进行批量删除的例子,文件名为 del-batch.lua

调用

执行了之后会删除符合规则 TEST_KEY* 的key

调用结果

以上是关于redis使用lua的主要内容,如果未能解决你的问题,请参考以下文章

redis怎么使用

怎样使用redis缓存,java代码

如何使用 Nodejs + Redis 获取给定 redis 键的 redis 值

Redis使用总结 (序列三)

Redis数据库的日常使用

php使用redis做缓存和使用redis保存session