Redis实战笔记
# Redis 实战笔记
# 技术架构图
这个项目是单体项目,架构比较简单,下图依然是理想架构,实际上只用单台 Tomcat、MySQL、Redis 即可:

# 目录解析
# config 目录
存放项目依赖相关配置。
| 配置类 | 说明 |
|---|---|
| MvcConfig | 配置了登录、自动刷新登录 Token 的拦截器 |
| MybatisConfig | 配置 MyBatis Plus 分页插件 |
| RedissonConfig | 创建单例 Redisson 客户端 |
| WebExceptionAdvice | 全局响应拦截器 |
# controller 目录
存放 RESTful 风格的 API 接口。
# dto 目录
存放业务封装类,如 Result 通用响应封装(不推荐学习它的写法)。
# entity 目录
存放和数据库对应的 Java POJO 实体类,一般是用 MyBatisX 等插件自动生成。
# mapper 目录
存放操作数据库的代码,基本没有自定义 SQL,都是复用了 MyBatis Plus 的方法,不做重点学习。
# service 目录
存放业务逻辑处理代码,需要重点学习。
| 实现类 | 核心技术 | 说明 |
|---|---|---|
| BlogServiceImpl | Redis | 基于 Redis 实现点赞、按时间排序的点赞排行榜;基于 Redis 实现拉模式的 Feed 流,推荐学习 |
| FollowServiceImpl | Redis Set | 基于 Redis 集合实现关注、共同关注,推荐学习 |
| ShopServiceImpl | Redis + GEO | 基于 Redis 缓存优化店铺查询性能;基于 Redis GEO 实现附近店铺按距离排序,推荐学习 |
| UserServiceImpl | Redis | 基于 Redis 实现短信登录(分布式 Session),推荐学习(虽然没有真的实现短信登录而是通过日志打印验证码代替——可考虑阿里云短信服务) |
| VoucherOrderServiceImpl | Redis 分布式锁 + Lua + MQ | 基于 Redis 分布式锁、Redis + Lua 两种方式,结合消息队列,共同实现了秒杀和一人一单功能,非常值得学习 |
| VoucherServiceImpl | Redis | 添加优惠券,并将库存保存在 Redis 中,为秒杀做准备 |
# utils 目录
存放项目内通用的工具类,需要重点学习。
| 工具类 | 说明 |
|---|---|
| CacheClient | 封装了通用的缓存工具类,涉及泛型、函数式编程等知识点,值得学习 |
| RedisConstants | 保存项目中用到的 Redis 键、过期时间等常量,值得学习 |
| RedisIdWorker | 基于 Redis 的全局唯一自增 ID 生成器,值得学习 |
| RedisTokenInterceptor | 自动刷新 Redis 登录 Token 有效期,值得学习 |
| SimpleRedisLock | 简单的 Redis 锁实现,了解即可,一般用 Redisson |
| UserHolder | 线程内缓存用户信息,可以学习 |
上次更新: 2026/10/10 17:43:40