黑马点评 heimadianping
GitHub: heimadianping
项目简介
黑马点评是一个本地生活服务类电商平台,覆盖餐饮、休闲娱乐、生活服务等场景,提供商户查询、用户评价、优惠领取、秒杀活动等核心功能。这个项目来源于黑马程序员的「黑马点评」系列课程,我在学习过程中完成了实战篇的开发。
作为一个练手项目,黑马点评的技术含量还是挺高的,尤其是 Redis 的深度使用和秒杀场景的防超卖处理,比一般的 CRUD 项目要复杂不少。
技术栈
| 层级 | 技术 |
|---|---|
| 后端框架 | Spring Boot、MyBatis-Plus |
| 数据库 | MySQL 8.0 |
| 缓存 | Redis 6.2 |
| 前端 | Nginx 静态部署 |
| 运行环境 | JDK 1.8+、Node.js 14+ |
项目结构
| 文件夹 | 说明 |
|---|---|
| hm-dianping | 后端代码 |
| nginx-1.18.0 | 前端代码 |
核心业务模块
用户模块
支持手机号登录注册(短信验证码)、每日签到、好友关注、共同好友等功能。签到功能用了 Redis 的 Bitmap 来实现,关注关系则用 Set 结构来存储,查询共同好友时直接做 Set 的交集运算,效率很高。
商户模块
商户列表展示、商户详情查看、按分类筛选商户。这部分涉及到 Redis 缓存的使用,商户详情做了缓存穿透、缓存击穿的防护处理。
点评模块
支持文字加图片的评价发布,点赞功能用 Sorted Set 来做排序,热门评价会优先展示。Feed 流的实现则借鉴了推拉结合的思路。
优惠模块
优惠券发放支持满减和折扣两种类型,有限时秒杀功能。秒杀场景下用 Redis + Lua 脚本来做库存预扣减,配合分布式锁防止超卖,这是整个项目中技术含量最高的部分。
搜索模块
基于 Elasticsearch 或数据库实现商户关键词搜索,支持按距离筛选。
个人感受
这个项目做下来,最大的收获是对 Redis 的各种数据结构有了更深入的理解。之前学 Redis 的时候只知道 String、Hash、List、Set、ZSet 这些基本类型,但通过黑马点评这个项目,真正把它们用到了实际业务场景中——用 Bitmap 做签到、用 Sorted Set 做排行榜、用 HyperLogLog 做 UV 统计、用 Lua 脚本保证原子性操作。
秒杀模块也是个亮点,从库存预扣减到分布式锁的实现,再到最终的下单流程,整个链路走下来对高并发场景的处理思路清晰了很多。
如果你也在学 Redis 的实战应用,黑马点评是一个不错的项目,推荐配合课程一起做。