在Redis中使用LUA脚本时最基本的命令

120 阅读2分钟

Redis是一个免费的、开源的内存数据库,被广泛用作缓存机制或消息代理。

虽然它在默认情况下是非常通用和广泛的,但它确实允许你使用其嵌入式Lua解释器来扩展功能。这意味着你可以用Lua编写脚本,对Redis数据库进行额外的操作。

要求

为了更好地跟上本教程,我们建议在你的系统上有最新版本的Redis服务器。

基本的Redis知识对理解本教程中说明的命令是有益的。

Redis EVAL 命令

要在 Redis 中运行 Lua 命令,你需要使用 EVAL 命令。该命令告诉Redis将代码作为服务器端的Lua脚本执行。

一个例子如图所示。

127.0.0.1:6379> EVAL "redis.call('SET', KEYS[1], ARGV[1])" 1 key value

在上面的例子中,我们以 EVAL 命令开始,后面是一个 Lua 脚本。该脚本使用 redis.call 函数。然后,我们把要运行的命令、键和值作为参数传递。这类似于运行SET键值。

注意,KEYS 和 ARGV 表示脚本的参数。在这种情况下,我们指定键的数量为1。

参数解析是通过ARGV完成的,ARGV持有参数表。在我们的例子中,我们传递的是键的值。

然后我们可以从索引1开始访问键。

注意: 建议在KEYS下指定脚本中使用的所有键,在ARGV下指定所有其他参数。

我们可以用get命令来获取一个键的值。

 127.0.0.1:6379> EVAL "redis.call('GET', KEYS[1])" 1 key

这应该会返回指定密钥的值。

Redis EVALSHA 命令

Redis 还为你提供了 EVALSHA 命令,以根据其哈希值调用一个命令。

这消除了每次需要时重新输入脚本的需要。

例子。

SCRIPT LOAD "return redis.call('get', KEYS[1])"

上面的命令应该返回一个SHA值为。

"4e6d8fc8bb01276962cce5371fa795a7763657ae"

然后你可以使用这个SHA值来调用一个命令。

127.0.0.1:6379> EVALSHA 4e6d8fc8bb01276962cce5371fa795a7763657ae 1 key
"value"

要删除所有加载的脚本,请运行命令。

127.0.0.1:6379> SCRIPT FLUSH
OK

上面的命令应该会刷新脚本缓存。

总结

这篇文章描述了在Redis中使用LUA脚本时最基本的命令。