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

Redis 实战篇1.4 (Redis优化秒杀)

Redis优化秒杀

原流程

思路

Redis优化秒杀在Redis中库存用String数据类型存储,为了确保一人一单,则订单id存储用Set数据类型保证数据的唯一性

lua脚本保证原子性

异步秒杀方案

案例:需求

创建订单(还没完成明天继续)

// 解锁的lua脚本 private static final DefaultRedisScript<Long> SECKILL_SCRIPT; // 静态代码赋值提升性能 static { SECKILL_SCRIPT = new DefaultRedisScript<>(); // 通过spring提供的类找到脚本资源获取lua脚本 SECKILL_SCRIPT.setLocation(new ClassPathResource("seckill.lua")); // 设置返回类型 SECKILL_SCRIPT.setResultType(Long.class); } @Override public Result createVoucherOrder(Long voucherId) { // 获取用户 Long userId = UserHolder.getUser().getId(); // 1.执行lua脚本 Long result = stringRedisTemplate.execute( SECKILL_SCRIPT, Collections.emptyList(), voucherId.toString(), userId.toString() ); // 2.判断结果是为0 int r = result.intValue(); if(r != 0){ // 2.1.不为0,代表没有购买资格 return Result.fail(r == 1 ? "库存不足" : "不能重复下单"); } // 2.2 为0 有购买资格,把下单信息保存到阻塞队列 long orderId = redisIdWorker.nextId("order"); // TODO 保存阻塞队列 // 3.返回订单id return Result.ok(orderId); }
http://www.jsqmd.com/news/583640/

相关文章:

  • 【游戏】从零到上线:微信小游戏开发全流程解析
  • 西门子S7-200SMART PLC与组态王7.0通信在压铸机控制中的应用:附带完整程序与多媒体资料
  • LPD8806驱动库详解:SPI控制16位PWM LED灯带的嵌入式实践
  • 从‘滋滋’声到过认证:一个Buck电源的EMI实战整改笔记(附PCB布局优化技巧)
  • 上篇:MCP:让AI从“嘴强王者”变“动手达人”的万能插头
  • 从SR到JK:深入解析双稳态电路的时序逻辑核心
  • 如何从视频中高效提取幻灯片:智能工具应用指南
  • 单相级联H桥(CHB)多电平变换器并网仿真,网侧电压220V PR电压外环 ,PI电流内环,有...
  • SEO优化与营销推广的关系是什么
  • Go语言的测试:从单元测试到集成测试
  • Matlab-Simulink动态相量法仿真,精确模拟电力电子的开关动作是的动态变化过程 程序
  • 2026保险理赔律所实力红黑榜:这些靠谱律师团队闭眼选 - 测评者007
  • 基于STM32单片机的近距离无线防丢器报警器系统设计
  • 下篇:MCP的三大门派,以及它到底能帮你干啥
  • 工业CT扫描模式解析:从TR到RO的技术演进与应用场景
  • 基于COMSOL的液冷板拓扑优化策略与多目标优化教程模型
  • Go语言的项目结构:从单体到微服务
  • Rocky Linux 9.5上保姆级部署若依RuoYi-Vue 3.9.0:三台虚拟机从零到访问的完整避坑记录
  • 基于MATLAB的激光光斑尺寸计算与光束质量M²因子拟合实践
  • 基于stm32的老人生理状态监护系统设计
  • Python 3.11.6 + Oracle 11g​开发环境配置 - yi
  • 竞技游戏设计实战:从核心机制到玩家体验的全面解析
  • 如何评估外贸网站SEO优化的效果_外贸网站SEO优化的最佳实践有哪些
  • Edge/Chrome用户必看:3种免费工具批量清理失效书签(2023实测)
  • DAMA数据管理框架实战指南:从理论到企业级应用
  • 西门子的S7-1200PLC物流分拣程序的系统设计,基于西门 西门子的S7-1200PLC物流...
  • Xilinx JTAG to AXI实战:如何在Vivado中快速搭建调试环境(附TCL命令大全)
  • 国内大模型托管平台推荐:四大平台选型指南
  • KKT条件实战:用Python手把手教你求解带约束的最优化问题
  • 直流升压斩波电路设计——含Simulink仿真文件和说明Word文件参考