Redis使用lua脚本

用lua脚本使用redis是为了保证其原子性和线程安全。

step1:编写lua脚本,放在resource中

step2:创建脚本对象,这里因为脚本对象是静态的所以在静态代码块中进行构造

  • setLocation: 这里的 ClassPathResource 会从类路径(通常是 resources 文件夹)读取文件。

  • setResultType(Long.class): 对应 Lua 脚本最后的 return

step3:执行lua脚本

复制代码
RedisScript<T> script脚本对像
Keys 输入Key数组参数
args 输入args数组参数
java 复制代码
private static final DefaultRedisScript<Long> UNLOCK_SCRIPT;
static {
    UNLOCK_SCRIPT = new DefaultRedisScript<>();
    UNLOCK_SCRIPT.setLocation(new ClassPathResource("unlock.lua"));
    UNLOCK_SCRIPT.setResultType(Long.class);
}

public void unlock() {
    // 调用lua脚本
    stringRedisTemplate.execute(
            UNLOCK_SCRIPT,
            Collections.singletonList(KEY_PREFIX + name),
            ID_PREFIX + Thread.currentThread().getId());
}
相关推荐
QH139292318801 天前
思仪 Ceyear 5256C 5G 终端综合测试仪
单片机·单元测试·集成测试·嵌入式实时数据库
笨鸟先飞的橘猫2 天前
基于Skynet的分布式游戏场景题:大型MMO的跨服战场系统设计
分布式·学习·游戏·面试·lua
汽车仪器仪表相关领域2 天前
Debron OVM 1052 光学关门速度仪:汽车门盖检测的高精度便携工具 + 生产线适配 + 耐久性监测,整车制造与质量控制的黄金标准
人工智能·功能测试·单元测试·汽车·制造·可用性测试
Sandy_Star3 天前
1.9 民法典及社会保险法制度规定
单元测试
xiufeia3 天前
后端项目初始化的一些小坑点
java·junit·maven·idea
Sandy_Star3 天前
1.7 税务行政法律救济
大数据·单元测试
Kiyra4 天前
Query Rewrite 不是越智能越好:RAG 检索的精确词保护与动态召回
redis·websocket·junit·单元测试·json
华万通信king4 天前
腾讯会议API集成测试实战:从单元测试到端到端自动化
单元测试·自动化·腾讯会议
Huanzhi_Lin4 天前
skynet笔记
笔记·lua·skynet·actor·actor模型
笨鸟先飞的橘猫5 天前
MMO游戏中的“跨服团队副本”匹配与状态同步系统
分布式·学习·游戏·lua·skynet