该项目以美食社交APP后台API接口设计为例。涉及APP中用户、好友、订单为基础的相关业务,分为用户、好友、排行榜、优惠券/秒杀、订单、附近的人、Feed等微服务。完成用户登录、交友、发朋友圈以及购买优惠券、下单整个业务流程,并实现积分排行榜以及附近的人等相关功能。
- 用户:实现用户注册、单点登录等功能
- 好友:实现关注、取关、互关等功能
- 排行榜:实现积分、热度排行版等功能
- 缓存:实现缓存餐厅数据等功能
- 秒杀:实现商品销售、商品倒计时秒杀等功能
- 订单:实现利用分布式锁解决多用户下单功能
- 附近的人:实现根据地理位置搜索附近的人等功能
- Feed流:实现添加、点赞、评论、列表等功能
美食社交APP的需求分析图:
项目功能描述图:
在本项目中,重点开发完成了如下表中的功能:
业务场景 | 数据类型 | 操作指令 | 作用 |
---|---|---|---|
单点登录 | String | SET、GET | 存储 Token 与登录食客信息 |
抢购代金券 | Hash、Lua | HGET、HSET、HINCRBY | 防止超卖、限购(分布式锁) |
好友功能 | Set | SADD、SMEMBERS、SINTER | 存储关注集合、粉丝集合、共同关注列表 |
Feed功能 | Sorted Set | ZADD、ZREVRANGE | 关注的好友的 Feed 流集合 |
签到功能 | Bitmap、String | SETBIT、GETBIT、BITCOUNT、BITFIELD | 位图存储食客签到信息 |
积分排行榜 | Sorted Set | ZINCRBY、ZREVRANK、ZREVRANGE | 存储食客总积分集合方便排序 |
附近的人 | Geo、Sorted Set | GEOADD、GEOREDIUS | 存储与查询食客地理位置信息 |
餐厅缓存 | Hash | HSET、HGETALL、HINCRBY | 存储餐厅热点数据 |
最新餐厅评论 | List | LPUSH、LRANGE | 存储最新餐厅评论 |
这里使用 Spring Security 和 OAuth2.0 实现了授权认证中心及单点登录的功能。这个功能中 Redis 主要用于存储 Token 令牌信息,使用了 String 数据类型。
这个功能中实现了抢购秒杀完整的一套业务,解决了超卖、限制一人一单的问题。
这个功能中 Redis 主要用于实现分布式锁、Lua脚本,使用了 Hash 数据类型,利用了原生的方式和 Redisson 的方式。
这个功能中实现了关注、取关、获取共同关注列表功能。
这个功能中 Redis 主要用于存储关注列表和粉丝列表中的相关用户信息,使用了 Set 数据类型。
这个功能中实现了添加 Feed、删除 Feed、关注取关时变更 Feed、查询 Feed 功能。
这个功能中 Redis 主要用于存储每个用户关注好友添加的 Feed 流集合,使用了 Zset 数据类型。
这个功能中实现了签到、补签、获取连续签到次数、获取签到总次数、获取签到详情功能。
这个功能中 Redis 主要用于存储签到信息,使用了 Bitmap 数据类型。
这个功能中实现了添加积分、获取积分排行榜功能。
这个功能中 Redis 主要用于存储积分信息,使用了 Sorted Set 数据类型。
这个功能中实现了上传用户坐标、获取附近的人功能。
这个功能中 Redis 主要用于存储地理位置信息,使用了 GEO 数据类型。
这个功能中实现了餐厅热点数据缓存、查询餐厅缓存功能。
这个功能中 Redis 主要用于存储餐厅信息,使用了 Hash 数据类型。
这个功能中实现了添加餐厅评论、获取餐厅评论功能。
这个功能中 Redis 主要用于存储餐厅评论信息,使用了 List 数据类型。
文档是对项目开发过程中遇到的一些问题的详细记录,便于快速了解该项目,并且后期可以复盘巩固这个项目。