Redis 执行Lua脚本

Redis 执行lua 脚本

redis incr 命令当Key不存在时会默认设置key 并自增为1,如果需要在key不存在时重新初始化key 可以在应用程序中判断,也可以直接使用lua脚本

Redis 执行lua脚本命令

Script load

将脚本 script 添加到Redis服务器的脚本缓存中,并不立即执行这个脚本,而是会立即对输入的脚本进行求值。并返回给定脚本的 SHA1 校验和。如果给定的脚本已经在缓存里面了,那么不执行任何操作。

bash 复制代码
script load "local exists = redis.call('exists', KEYS[1]); if (exists == 1) then return redis.call('incr', KEYS[1]); end return nil;"

返回: 66dbc284948b243d16fd97265e0eac41567c29ed

需要调用该脚本时可以使用

bash 复制代码
 EVALSHA 66dbc284948b243d16fd97265e0eac41567c29ed  1 testIncr

1代表参数下标

testIncr 代表 参数值

直接调用lua脚本

bash 复制代码
 eval "local exists = redis.call('exists', KEYS[1]); if (exists == 1) then return redis.call('incr', KEYS[1]); end return nil;" 1 testIncr

判断脚本是否存在

bash 复制代码
SCRIPT EXISTS 66dbc284948b243d16fd97265e0eac41567c29ed

杀掉Lua脚本

bash 复制代码
SCRIPT KILL

清空Lua脚本

bash 复制代码
SCRIPT FLUSH

上述命令可以新增一个参数,用以设置在Key不存在时,初始化Key的值,有需要的自行改造

相关推荐
10年前端老司机1 小时前
Milvus 8种检索能力实践
数据库·python·agent
鶴哥只手遮天2 小时前
《Redis 8.10.3 深度剖析》系列 ·第 10 章 Hash 一:`listpack`、`hashtable` 与 `LISTPACK_EX`
redis·后端·开源
Decay__2 小时前
14_MySQL 高可用与容灾架构 —— MGR / InnoDB Cluster / Keepalived+VIP / 双主 / 读写分离 / 两地三中心
运维·数据库·sql·mysql·架构
freejackman2 小时前
【实战三】撕开脱敏盲区:深度解析 CASE WHEN 与窗口函数血缘
大数据·数据库·sql
codigger4 小时前
线上数据库连接池打满:从应急止损到架构根治的完整方案
数据库·sql·程序员
倔强的石头_4 小时前
集中式与分布式怎么选?我把手头11套系统重新过了一遍秤
数据库
挖掘狂人4 小时前
线上数据库连接池打满:从应急止损到架构根治的完整方案
数据库·sql·程序员
Rainmicro4 小时前
【无标题】
java·数据库·算法
Thanks_ks5 小时前
MySQL 的索引是什么?用图书馆的目录讲明白
数据库·sql·mysql·索引·联合索引·explain·慢查询优化