项目技术亮点
# 项目技术亮点
# 项目描述
基于 Redis 的生活服务点评平台,涵盖商户查询、优惠券秒杀、社交互动(点赞/关注/Feed 流)、附近商户、用户签到等核心业务,深度实践 Redis 各类数据结构与高并发解决方案。
# 技术栈
Spring Boot · MyBatis-Plus · Redis · Redisson · Lua 脚本 · Spring Cloud Gateway
# 核心职责与技术亮点
- 分布式 Session 登录:为解决多节点环境下 Session 不共享问题,基于 Redis Hash 存储用户登录态,使用双拦截器实现登录校验与 Token 自动刷新,保障分布式部署下用户状态一致性
- 缓存穿透/雪崩/击穿解决方案:为解决缓存三大经典问题,缓存空对象 + 短 TTL 解决穿透,TTL 添加随机值解决雪崩,互斥锁与逻辑过期两种方案解决击穿,封装通用缓存工具类
CacheClient支持泛型与函数式编程提升复用性 - 全局唯一 ID 生成器:为解决高并发场景下分库分表主键冲突问题,基于 Redis 自增 + 时间戳 + 序列号实现 64 位全局唯一 ID,满足唯一性、高可用、高性能、递增性、安全性要求
- 优惠券秒杀:为解决秒杀场景下超卖与一人多单问题,使用 Lua 脚本原子性执行库存判断与一人一单校验,结合乐观锁(stock > 0)解决超卖问题,通过阻塞队列实现异步下单提升并发性能
- 分布式锁演进:为解决分布式场景下共享资源竞争问题,从 SETNX 基础实现逐步演进至 UUID 线程标识防误删、Lua 脚本保证释放锁原子性、Redisson 可重入锁 + WatchDog 看门狗续期,系统性解决分布式锁各类问题
- 社交功能:为解决关注关系与点赞排序查询效率问题,基于 Redis Set 实现关注/共同关注(交集运算),使用 ZSet 实现点赞排行榜(按时间戳排序),推模式实现 Feed 流滚动分页
- GEO 附近商户:为解决附近商户按距离排序查询性能问题,使用 Redis GEO 存储商户经纬度并按店铺类型分 GEO 集合,实现附近商户按距离排序查询,提升 LBS 业务响应速度
- BitMap 签到:为解决海量用户签到数据存储与连续签到统计问题,使用 BitMap 记录用户每日签到情况,通过位运算统计连续签到天数,以极小内存占用实现海量数据表示
- HyperLogLog UV 统计:为解决独立访客量统计内存占用大问题,使用 HyperLogLog 统计独立访客量,仅需 12KB 内存即可统计 2^64 个元素,误差小于 0.81%
上次更新: 2026/10/10 18:05:45