基于redis 实现我的收藏功能优化详细设计方案

发布于:2025-04-14 ⋅ 阅读:(25) ⋅ 点赞:(0)

基于redis 实现我的收藏功能优化详细设计方案

一、架构设计
+---------------------+          +---------------------+
|     客户端请求        |          |     数据存储层        |
|  (收藏列表查询)       |          |  (Redis Cluster)     |
+---------------------+          +---------------------+
           |                                ↑
           ↓                                |
+---------------------+          +---------------------+
|    API网关层         |<--------|  数据库层             |
|  (Spring Boot)      |          |  (MySQL Cluster)     |
+---------------------+          +---------------------+
           |
           ↓
+---------------------+
|   缓存策略引擎        |
|  (多级缓存管理)       |
+---------------------+
二、数据存储设计
  1. MySQL表结构
CREATE TABLE user_favorites (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT NOT NULL COMMENT '用户ID',
    VARCHAR(64) NOT NULL COMMENT '收藏项ID',
    item_type TINYINT NOT NULL COMMENT '收藏类型(1:招标 2:公告...)',
    collected_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    is_deleted TINYINT DEFAULT 0,
    INDEX idx_user_item(user_id, item_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  1. Redis数据结构
# 用户收藏元数据缓存
favorite_meta:{
   user_id}:{
   item_type} = Hash {
   
    "item_id1": "收藏时间戳",
    "item_id2": "收藏时间戳"
}

# 热点收藏项详情缓存
favorite_detail:{
   item_type}:{
   item_id} = String {
   
    "JSON序列化的详情数据"
}

# 布隆过滤器键
bloom_filter:favorites = BloomFilter
三、核心流程优化
  1. 查询流程
sequenceDiagram
    participant C as Client
    participant S as Server
    participant R as Redis
    participant M as MySQL
    
    C->>S: 请求收藏列表(user_id, page, size)
    S->>R: EXISTS favorite_meta:{user_id}
    alt 缓存存在
       >>S: 存在
        S->>R: HGETALL favorite_meta:{user_id}
        R-->>S: 返回元数据
        S->>R: MGET favorite_detail:{item_ids}
        S->>C: 返回完整列表
    else 缓存不存在
        R-->>S: 不存在
        S->>M: 查询MySQL获取数据
        M-->>S: 返回结果集
        S->>R: HSET favorite_meta:{user_id} + EXPIRE
        S->>R: SET favorite_detail:{item_ids} + EXPIRE
        S->>C: 返回结果
    end
  1. 写入流程

网站公告

今日签到

点亮在社区的每一天
去签到