Skip to content

黑马点评 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 的实战应用,黑马点评是一个不错的项目,推荐配合课程一起做。