当前位置: 首页 > news >正文

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

基于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. 写入流程

相关文章:

  • HCIP第十一天
  • 攻防世界——Web题ez_curl
  • 代码学习总结(二)
  • AIDD-人工智能药物-pyecharts-gallery
  • 滑动窗口(4)—将x减到0的最⼩操作数
  • 基于时间序列分解与XGBoost的交通通行时间预测方法解析
  • x265 编码参数 rdLevel 详细解析
  • buuctf sql注入类练习
  • UITableVIew性能优化概述
  • 【DE2-115】Verilog实现DDS+Quartus仿真波形
  • 【算法】One-Stage检测器与Two-Stage检测器的原理和区别
  • 开启bitlocker使用windows的加密功能
  • (1)VTK环境配置
  • Unity 基于navMesh的怪物追踪惯性系统
  • CAP理论 与 BASE理论
  • RAG文献阅读——用于知识密集型自然语言处理任务的检索增强生成
  • 数据库删除表数据
  • 在C盘新建文本文档
  • Go环境变量配置
  • Qt报错dependent ‘..\..\..\..\..\..\xxxx\QMainWindow‘ 或者 QtCore\QObject not exist
  • 郑州富士康要搬迁是真的吗/seo基础篇
  • 网络域名费用多少钱/什么是seo
  • 手机网站链接微信/seo优化培训
  • 珠海网站建设兼职/公司个人怎么做网络推广
  • 网站建设的需求方案/5年网站seo优化公司
  • 如何给wordpress文章部分内容加密/seo免费优化工具