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());
}
相关推荐
许彰午11 天前
39_Java单元测试JUnit入门
java·junit·单元测试
xingpanvip11 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
骇客之技术11 天前
AutoLua:在安卓上写 Lua 脚本
android·junit·lua
weixin_4713830311 天前
Node.js + Express 入门实战笔记-01-基础
node.js·lua·express
果子耶耶11 天前
让大模型帮我写单元测试,5个模型的覆盖率和边界处理能力实测
chatgpt·单元测试
闪电悠米11 天前
黑马点评-Redis ZSet-实现关注 Feed 流
服务器·网络·数据库·redis·缓存·junit·lua
川石课堂软件测试12 天前
APP自动化测试|高级手势操作&toast操作
css·功能测试·测试工具·microsoft·fiddler·单元测试·harmonyos
Chris-zz12 天前
lua流程控制
开发语言·lua
多彩电脑12 天前
Lua基础入门
开发语言·lua