当前位置: 首页 > news >正文

SpringBoot 执行Lua脚本 服务端执行 减少性能损耗 优化性能 优化连接性能

介绍

通过 Redis 执行 Lua 脚本时,所有的操作都在服务器端完成,而不是多次通过网络进行请求。这可以显著减少网络延迟,尤其是在需要多次与 Redis 交互的场景中。多个操作可以在 Lua 脚本中组合成一个操作,而不是分多次请求,这减少了客户端与 Redis 之间的往返次数,从而提升了性能。脚本的执行是原子的。意味着整个 Lua 脚本会在 Redis 服务器中一次性执行,不会被中断,确保了操作的原子性。

创建Lua脚本

redis 脚本 键不存在就添加 不存在 就删除例子,

在资源文件中创建
resources/redis.lua

if redis.call('EXISTS', KEYS[1]) == 1 then  -- 检查传入的键 (KEYS[1]) 是否存在redis.call('DEL', KEYS[1])  -- 删除键 (KEYS[1])elseredis.call('SET', KEYS[1], ARGV[1])  -- 如果键不存在,设置键 (KEYS[1]) 的值为 (ARGV[1])endreturn 1  -- 返回1,表示脚本成功执行
  • KEYS[1] 是传入脚本的第一个键
  • ARGV[1] 是传入脚本的第一个值

执行脚本

@RequiredArgsConstructor
public class RedisScript {private static final DefaultRedisScript<Long> script ;//Long为返回值类型static {script=new DefaultRedisScript<>();//初始化脚本 resources\redis.luascript.setLocation(new ClassPathResource("redis.lua"));//设置返回值类型script.setResultType(Long.class);}public static Long runScript(StringRedisTemplate  redisTemplate){// 传递多个参数//List<String> keys = Arrays.asList("key1", "key2");  // 两个键//List<String> args = Arrays.asList("value1", "value2");  // 两个值return redisTemplate.execute(script,Collections.singletonList("dpc"), //KeyUUID.randomUUID().toString() ); //Value}}

static 代码块是静态初始化块,它会在类加载时被执行一次。这里的 static 代码块用于初始化静态变量 script。

接口调用

private final StringRedisTemplate redisTemplate;@GetMapping("/redis")
public Long redis(){return  RedisScript.runScript(redisTemplate);
}

在这里插入图片描述

相关文章:

  • 工业5.0视域下的医疗AI行业未来发展方向研究
  • SpringBoot 验证码练习
  • C++学习之STL学习:vector类的使用
  • Milvus向量Search查询综合案例实战(下)
  • 即插即用的全新算法改进策略——引导学习策略:一种用于元启发式算法设计和改进的新型更新机制
  • C语言| 函数参数传递指针
  • 如何使用 poetry 创建虚拟环境,VSCode 如何激活使用 Poetry 虚拟环境(VSCode如何配置 Poetry 虚拟环境)
  • 2025年渗透测试面试题总结-匿名[校招]安全服务工程师(题目+回答)
  • GitLab CI流水线权限隔离
  • jsrpc进阶模式 秒杀js前端逆向问题 burp联动进行爆破
  • 大模型应用开发第五讲:成熟度模型:从ChatGPT(L2)到未来自主Agent(L4)
  • AI觉醒前兆,ChatGPT o3模型存在抗拒关闭行为
  • 【Linux学习笔记】深入理解动静态库本质及其制作
  • 题目 3316: 蓝桥杯2025年第十六届省赛真题-数组翻转
  • CSS选择器:has使用示例
  • 通过mailto:实现web/html邮件模板唤起新建邮件并填写内容
  • Linux 第十二讲 --- 进程篇(二) 初识进程
  • KONG根据请求参数限流
  • QT使用cmake添加资源文件闪退,创建了qrc文件不能添加的问题解决
  • 【Elasticsearch】track_total_hits
  • 网站转移码/河南网站开发公司
  • 怎样给网站换空间/在线识图
  • 网站结构怎么做适合优化/西安百度公司官网
  • 不同类型网站比较/外贸营销平台
  • 成都网站设计/百度的营销推广
  • 怎样在各大网站发布信息/推广策略