为什么使用Lua脚本为什么能合并多个原子操作?
这里参考官方文档地址:Scripting with Lua | Redis
Redis 保证Lua脚本的原子执行。在执行脚本时,所有服务器活动在其整个运行期间都被阻止。这些语义意味着脚本的所有效果要么尚未发生,要么已经发生。
脚本提供了几个在许多情况下都很有价值的属性。这些包括:
- 通过在数据所在的地方执行逻辑来提供局部性。数据局部性减少了整体延迟并节省了网络资源。
- 确保脚本原子执行的阻塞语义。
- 启用 Redis 中缺少的或过于小众的简单功能的组合。
Lua 允许您在 Redis 中运行部分应用程序逻辑。这样的脚本可以跨多个键执行条件更新,可能以原子方式组合几种不同的数据类型。
命令行应用Lua
Redis Eval 命令使用 Lua 解释器执行脚本。
这里能帮我们实现 Redis 执行 Lua 脚本的命令有两个,一个是 EVAL,另一个是 EVALSHA。
redis Eval 命令基本语法如下:
EVAL script numkeys key [key ...] arg [arg ...]