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脚本时最基本的命令。