摘要:本文介绍了Redis的脚本。
环境
Windows 10 企业版 LTSC 21H2
Redis 7.4.8
1 概述
Redis的脚本是使用Lua语言编写的脚本,它可以在服务器执行,实现复杂的业务逻辑。
脚本可以原子性地执行多个命令,避免网络往返时间,提高执行效率。
2 特点
脚本特点:
- 原子性:脚本中的所有命令会原子性地执行,执行期间其他客户端的命令会被阻塞,避免竞态条件。
- 降低网络开销:将多个命令封装在一个脚本中,减少网络通信的次数,提高执行效率。
- 超时机制:脚本执行时间过长会被服务器终止,默认超时时间为5秒。
- 缓存机制:服务器会缓存脚本,避免重复编译脚本。
3 原理
工作原理:
- 客户端将脚本发送给服务器。
- 服务器编译脚本并缓存。
- 服务器原子性地执行脚本中的所有命令。
- 服务器返回脚本执行的结果。
4 使用
命令:
EVAL 脚本内容 键名数量 键名 参数:执行脚本,通过脚本内容执行脚本。EVALSHA 脚本SHA1哈希值 键名数量 键名 参数:通过脚本的SHA1哈希值执行脚本,节省代码长度,但是需要缓存脚本。SCRIPT LOAD:加载脚本到缓存。SCRIPT EXISTS:检查脚本是否在缓存中。SCRIPT FLUSH:清空脚本缓存。SCRIPT KILL:终止正在执行的脚本。
在脚本中调用Redis执行命令:
redis.call():调用Redis命令,遇到错误时抛出异常,脚本立即终止。redis.pcall():调用Redis命令,遇到错误时捕获错误,返回包含错误信息的Lua表格,脚本继续执行。
示例:
1 | 127.0.0.1:6379> EVAL "return redis.call('SET', KEYS[1], ARGV[1])" 1 user 张三 |
条