完结篇!黑马点评项目总结

957 词

耗时一个多月,总算结束了黑马点评项目的学习。跟着视频敲代码的同时,也在按照自己的想法去做一些额外的东西,对于Redis的各种用法也算是有了自己的理解。
下面,是一些总结笔记吧

项目简介

基于Spring Boot + Redis的店铺点评,实现了找店铺 => 秒杀商品 => 写点评 => 看热评 => 点赞关注 => 关注Feed流的完整业务流程。

主要工作

  1. 短信登陆:使用Redis实现分布式Session,解决集群间登录态同步问题;使用Redis + Token机制实现单点登录;使用Hash代替String来存储用户信息,节约了 6.7% ,并便于单字段的修改。
    内存占用对比图

  2. 店铺查询:使用Redis对高频访问店铺进行缓存,降低DB压力同时提升 89.2% 的数据查询性能;对Redis的所有key设置N + n过期时间,从而合理使用内存并防止缓存雪崩;针对热点店铺缓存,使用逻辑过期机制解决缓存击穿问题,防止数据库宕机;使用缓存Null对象方法,防止缓存穿透的发生,提高了DB容错能力。

  3. 为方便其他业务后续使用缓存,使用泛型 + 函数式编程实现了通用缓存访问静态方法;使用常量类全局管理Redis Key前缀、TTL等,保证了键空间的业务间隔,减少冲突。

  4. 使用Redis的Geo + Hash数据结构分类存储附近商户,并使用Geo Search命令实现高性能商户查询及按距离排序,取代了传统DB查询 + 业务层计算的方式。

  5. 使用Redis List数据结构存储用户点赞信息,并基于ZSet实现TopN点赞排行,实测相对于DB查询性能提升 64.8%

  6. 使用Redis Set数据结构实现用户关注、共同关注功能(交集),实测相对于DB查询性能提升 106.4%

  7. 使用Redis BitMap实现用户连续签到统计系统功能,相对于传统关系数据库存储,节约 99%以上 的内存并提升 89.44% 的查询性能。

  8. 在系统用户量不大的前提下,基于推模式实现关注Feed流,保证了新点评消息的及时可达,并减少用户访问的等待时间。

  9. 优惠券秒杀:使用Redis + Lua脚本实现库存预检,并通过Stream队列实现订单的异步创建,解决了超卖问题、实现一人一单。相比传统数据库,秒杀性能提高了 79.72%