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

Redis 黑马点评-优惠券秒杀

1.全局唯一ID:订单的id

2.实现秒杀下单

3.超卖问题

4.一人一单功能:加锁 synchronized

intern():字符串常量池。字符串的值相同,就锁的是同一个对象。因为toString底层是new字符串。

5.集群下的线程并发安全问题

重新加载nginx : nginx.exe -s reload

由于内存隔离,在集群模式下,不同的jvm的锁监视器不同,创建的字符串常量池不同。

解决方案:分布式锁

6.分布式锁:jdk之外的锁

6.1基本原理和不同实现方式对比

6.2Redis的分布式锁的实现思路:setnx

6.2实现Redis分布式锁版本1

6.3锁误删:删之前加判断条件,是自己的锁才能删

6.4原子性问题:判断锁和释放锁成原子操作

获取标识后,就在准备释放锁的时候出现阻塞。判断锁和释放锁要成原子操作。

6.5Lua脚本解决多条命令原子性问题

6.6Java调用Lua脚本改造分布式锁

7.Redission:基于Redis的分布式锁

7.1Redission功能介绍

7.2Redission快速入门

7.3Redisson的可重入锁的原理

使用哈希结构,value用来存储当前线程获取锁的次数

获取锁Lua脚本

释放锁Lua脚本

7.4Redisson锁可重试和WatchDog机制

tryLock():可以传递三个参数,等待时间、锁持有时间、时间单位

leaseTime不传会给一个-1,释放时间会给一个默认值,3

7.5Redisson的multiLock原理

8.秒杀优化

8.1 异步秒杀思路

由于串行操作,对数据库操作次数多,响应时间长。

优化:判断业务交给redis,判断完毕之后保存到队列中,创建线程异步操作数据库。

同步变异步

8.2基于redis完成秒杀资格判断

①将优惠券信息保存到Redis中

②seckill.lua脚本:扣减库存、一人一单

③如果抢购成功,将优惠券id和用户id封装后存入阻塞队列

8.3基于阻塞队列实现秒杀异步功能

9.消息队列

9.1认识消息队列

9.2基于List实现消息队列

9.3PubSub实现消息队列

9.4Stream

http://www.dtcms.com/a/482211.html

相关文章:

  • 网站页面示意图怎么做宁波北仑做网站
  • ffmpeg转化mp3至wav格式
  • 不同类型的 3D 文件格式
  • ElasticSearch 实战:全文检索与数据聚合分析的完整指南​
  • Day62 设备驱动程序开发基础与LED控制
  • 支持Word (doc/docx) 和 PDF 转成一张垂直拼接的长PNG图片工具类
  • JAVA同城预约服务家政服务美容美发洗车保洁搬家维修家装系统源码小程序+公众号+h5
  • 正规拼多多代运营公司如何优化网站结构
  • 三层前馈神经网络实战:MNIST手写数字识别
  • 深度学习(四)
  • 学习HAL库STM32F103C8T6(MQTT报文)
  • 【C++】C++11特性学习(1)——列表初始化 | 右值引用与移动语义
  • 网站布局 种类手机商城页面设计
  • 如何建设手机端网站电力公司建设安全文化
  • 红色 VR 大空间:技术赋能红色文化传承的运营价值与实践路径
  • 网络协议工程 - eNSP及相关软件安装 - [eNSP, VirtualBox, WinPcap, Wireshark, Win7]
  • WHAT - 前端性能指标(交互和响应性能指标)
  • 专业的媒体发稿网
  • dede旅游网站模板wordpress教学主题
  • 做网站的技术性说明怎么自己做微网站吗
  • VScode安装以及C/C++环境配置20251014
  • 黄页网站大全通俗易懂wordpress 数据库配置错误
  • 常规的红外工业镜头有哪些?能做什么?
  • 一文读懂分子结合位点的预测:为双荧光素酶实验铺路
  • SM4密码核心知识点
  • 当代社会情绪分类及其改善方向深度解析
  • Python 求圆柱体的周长(Find the perimeter of a cylinder)
  • 攻防世界-Web-unseping
  • Python 第十三节 Python中各种输入输出方案详解及注意事项
  • 优秀的网站设计分析西电信息化建设处网站