第四天
今日任务:
1、数据库表结构和UML用例图理清
2、完成今天代码(优先紧急)、 redisson代码不需要大家写(AtomicLong、Rmap、分布式锁)
3、面试的点整理到笔记上,问题整到笔记上,同步到石墨文档
XMind 问题汇总
4、刷SQL**
2-5
5、每一个接口测试时使用debug走一下流程

1. 能够说出Redison框架的作用?

Redissionti提供了使用Redis的最简单最便捷的方法。Redisson的宗旨是促进使用者的关注分离,让使用者更多的精力集中在处理业务逻辑上
image.png

2. 能够说出Redison对象桶有哪些? 什么是对象桶?

Redisson的分布式RBucket是一种通用对象桶可以用来存放任意类型的对象
image.png

3. 原子性对象有哪些?

  1. Redisson的分布式整长形RAtomicLong
  2. 分布式原子双精度浮点RAtomicDouble

项目中会使用的
incrementANdGet先递增,再返回元素
使用:双精度为列:
image.png]

4. redisson-分布式集合数据结构是什么? 主key和辅key有什么作用?(hashMap)

Redis的Redisson的分布式映射结构RMap对象,RMapCache对象
image.png
代码示范:
image.png
注意:
image.png

5. Redisson的映射监听器

image.png
代码实例:
image.png
监听可以实现延迟队列的效果,但是时间不可控

6. redisson-分布式锁

1. 原理是什么?

图解:
分布式锁相比于jdk层面,redis分布式锁再进行多个微服务负载均衡的时候只能有一个微服务获取到这把锁
image.png
image.png

2. 怎么用?

代码示例:
image.png
注意:


image.png


image.png


image.png


image.png


day04-Redissson总结 - 图16

3. WatchDog自动延期机制是什么?

image.png

7.桌台是否开台的前提条件是什么?

  • 当前桌台处于空闲状态且无订单,认为桌台未开台,可以使用
  • 当前桌台存在处于【待付款、支付中】的订单,认为当前桌台已开台

8.查询相关主体时需要统一查询哪些数据? 核心的字段是什么?

image.png
核心字段:桌台Id
在用户执行下单时,我们需要Redis的购物车订单项会合并到可核算订单项中


9.开桌主要完成哪些操作?

image.png

  1. 用户通过二维码扫码,进入门店点餐系统
  2. 扫码之后,查询桌台是否已开台
  3. 已开台:查询当前桌台订单信息【包括可核算订单项和购物车订单项】
  4. 未开台:选择就餐人数,创建订单
  5. 查询桌台订单信息,返回主体信息

10.开桌的实现流程是什么?

image.png


11.开桌为什么需要加分布式锁? 如果不加分布式锁是否可以? key是什么?

因为我们要避免两个人同时扫码开桌,发送数据冲突。
不加分布式锁可以使用MySQL行锁

12. sys同步锁和分布式锁区别

sys同步锁只能单个服务使用,微服务的情况下只能锁定当前的服务。
分布式锁是把锁存到redis中,整个微服务公用锁。


13.什么是幂等性? 开桌时为什么需要考虑冪等操作?

多次请求返回值相同。
因为会多次调用,避免数据混乱照成异常。


14.订单创建时机是什么?

开桌成功后创建订单


13.什么是可核算订单项? 什么是购物车项? 分别存到哪里?

可核算订单时只已经下单的可结算的内容,存储到MySQL中
购物车项是还在购物车中未下单的内容,存储到redis中