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());
}
相关推荐
2301_771717213 小时前
idea中springboot中使用junit测试报错的解决方案
spring boot·junit·intellij-idea
念越3 小时前
蓝桥杯单元测试模拟1期模拟题答案及代码解析
蓝桥杯·单元测试·测试
Aktx20FNz3 小时前
OpenClaw中级到高级教程
lua
LcGero4 小时前
Lua + Cocos Creator 实战:用 Lua 驱动 UI 与游戏逻辑
游戏·ui·lua
AIminminHu1 天前
OpenGL渲染与几何内核那点事-项目实践理论补充(三-1-(2):当你的CAD代码变得“又大又乱”:从手动编译到CMake,从随性编码到单元测试))
c++·单元测试·cmake·cad·cad开发
Java成神之路-1 天前
Spring 整合 MyBatis 全流程详解(附 Junit 单元测试实战)(Spring系列6)
spring·junit·mybatis
DolphinDB智臾科技2 天前
DolphinDB 单元测试教程
单元测试
春日见2 天前
TEST文件夹:Pytest,集成测试,单元测试
服务器·人工智能·驱动开发·单元测试·计算机外设·集成测试·pytest