昨天面试的几个 MySQL 和 Redis 的题目,来请教一下

204 天前
 dumbbell5kg

1.MySQL 里的记录有这么两个字段:
课程 id课程余额
同时间大量学生抢同一门课,如何设计这个功能?

2.线上 Redis 内存满了,应该如何处理?

3.你认为解决高并发问题的本质是什么?

求大佬赐教 orz

8045 次点击
所在节点    数据库
63 条回复
Huelse
203 天前
1. 要么限流+事务+锁,要么把选课事件插入到一个新表里然后按序分配
2. 删除没用的数据,集群扩容
3. 本质上就是分配资源问题,按序或者随缘分配
andykuen959595
203 天前
大佬多 我来学习!
homjay
123 天前
小白总结了下,大佬们是这个意思吗

1:
场景:秒杀系统(新起专门处理秒杀请求的服务,独立部署,减少对主站的影响)
流程:前端 -> 网关(nginx) -> 后端 -> 缓存(redis) -> 数据库(mysql)
原则:
1 、限流:前端选择性向后端发送真正请求(根据时间戳取余,用户会多次点击)、nginx (网关限流 1 分钟最多请求 10000 次)
2 、过程:
1 、2024-07-15 12:00 开启秒杀活动
2 、2024-07-15 11:30 秒杀服务从 mysql 读取数据,写入到 redis 缓存(预热准备)
3 、2024-07-15 12:00 时间到达
4 、(小王)请求发送 -> 后端判断用户是否符合参加活动 -> 开启 redis 锁 -> 从 redis 读取数据 -> 实现业务逻辑(库存相减...) -> 更新 reids 里面的值
5 、秒杀活动持续 1 分钟
6 、2024-07-15 12:01 时间结束
7 、2024-07-15 12:01 将 redis 数据回写到 mysql

2:
线上 Redis 内存满了,应该如何处理?
方案:
1 、判断是否有未设置过期时间(TTL)的 key
2 、内存淘汰策略
3 、添加监控


3:
你认为解决高并发问题的本质是什么
本质:
1 、系统同时处理大量请求,确保响应时间可接受且系统资源不被耗尽
方案:
1 、系统同时处理大量请求 => 减少请求(限流)
2 、系统资源不被耗尽 => 加强系统资源 => 花钱升级服务器
3 、系统资源不被耗尽 => 耗时的任务 => 减少耗时时间 => (旁路缓存,不经常更新数据,原来从 mysql 读取,优化为从 redis 读取)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1035477

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX