苍穹外卖Day05笔记

苍穹外卖Day05笔记

一、Redis 常用命令

1. 通用命令

  • keys pattern 查找符合规则的 key
  • exists key 判断 key 是否存在
  • type key 查看 key 对应值的类型
  • del key 删除指定 key

2. 字符串(String)

  • set key value 设置键值对
  • get key 获取 value
  • setex key seconds value 设置并指定过期时间
  • setnx key value 不存在才设置(用于分布式锁)

3. 哈希(Hash)

  • hset key field value 设置字段
  • hget key field 获取字段
  • hdel key field 删除字段
  • hkeys key 获取所有字段名
  • hvals key 获取所有字段值

4. 列表(List)

  • lpush key value1 value2 从左边插入
  • lrange key start stop 获取范围内元素
  • rpop key 移除并获取最后一个元素
  • llen key 获取列表长度

5. 集合(Set)

  • sadd key member1 member2 添加元素
  • smembers key 获取所有元素
  • scard key 获取元素个数
  • sinter key1 key2 求两个集合交集
  • sunion key1 key2 求两个集合并集
  • srem key value 删除指定元素

6. 有序集合(ZSet)

  • zadd key score member 添加元素(带分数)
  • zrange key start stop [withscores] 按排名范围查询
  • zincrby key increment member 增加分数
  • zrem key member 删除元素

二、Swagger 优点

  1. 自动生成接口文档
    代码写完,接口文档自动生成,无需手动编写。
  2. 接口信息清晰
    包含接口地址、请求方式、参数、返回值、错误码等。
  3. 支持在线调试
    可直接在页面发送请求、查看响应,方便前后端联调。
  4. 注解驱动,侵入低
    使用 @Api@ApiOperation 等注解即可,不影响业务逻辑。
  5. 统一接口规范
    前后端共用一份文档,减少沟通歧义。
  6. 实时同步更新
    代码修改后文档自动更新,避免文档过时。
  7. 支持环境控制
    可在开发/测试环境开启,生产环境关闭。

三、Redis vs MySQL 对比

1. 核心差异对比表

维度 Redis MySQL
存储类型 内存数据库(支持持久化) 磁盘数据库(关系型)
数据结构 支持字符串、哈希、列表、集合、有序集合等 基于表结构,支持关系(一对一/一对多等)
读写性能 读写速度极快(内存操作) 读写速度适中(磁盘IO)
事务支持 弱事务(仅保证单命令原子性) 强事务(ACID特性)
数据一致性 最终一致性(分布式场景) 强一致性
持久化方式 RDB、AOF 日志+磁盘存储
索引支持 简单索引(如有序集合分数索引) 丰富索引(主键、唯一、联合、全文索引)
查询能力 简单查询,支持少量聚合(交集/并集) 复杂SQL查询(联表、分组、聚合等)

2. 优缺点分析

Redis 优点
  • 超高读写性能,单机QPS可达10万+;
  • 支持丰富数据结构,适配多样业务场景;
  • 支持过期策略、分布式锁,适配缓存/限流等场景;
  • 支持集群部署,可水平扩展。
Redis 缺点
  • 内存成本高,不适合存储海量数据;
  • 事务能力弱,无法满足强事务要求;
  • 复杂查询能力差,不支持联表等操作;
  • 数据易丢失(内存存储,依赖持久化)。
MySQL 优点
  • 支持复杂SQL查询和事务,满足业务逻辑要求;
  • 磁盘存储成本低,可存储海量结构化数据;
  • 强一致性,适配金融/订单等核心业务;
  • 生态完善,工具链丰富(备份、监控等)。
MySQL 缺点
  • 读写性能受磁盘IO限制,远低于Redis;
  • 扩展复杂(分库分表成本高);
  • 数据结构单一,仅支持表结构存储。

3. 适配场景

Redis 适配场景
  • 缓存(热点数据:商品详情、用户信息);
  • 计数器(点赞数、访问量、库存计数);
  • 限流(接口限流、秒杀限流);
  • 分布式锁(多服务并发控制);
  • 消息队列(简单的生产消费场景);
  • 排行榜(有序集合实现实时排名)。
MySQL 适配场景
  • 核心业务数据存储(订单、用户、商品基础信息);
  • 复杂业务逻辑查询(联表、分组统计);
  • 强事务要求场景(支付、转账);
  • 海量结构化数据存储(历史订单、日志)。

4. 协同使用场景

实际项目中(如苍穹外卖),二者通常协同使用:

  • Redis 作为缓存,存储热点数据(如菜品列表),减轻MySQL压力;
  • MySQL 存储核心数据(如订单、用户信息),保证数据一致性;
  • 写操作先更MySQL,再更Redis(或删除缓存);读操作优先查Redis,未命中再查MySQL并回写Redis。

总结

  1. Redis 核心优势是高性能、丰富数据结构,适配缓存/限流/排行榜等场景,不适合海量存储和强事务;
  2. MySQL 核心优势是强事务、复杂查询、低成本存储,适配核心业务数据存储,性能是短板;
  3. 实际开发中二者协同,Redis 解决性能问题,MySQL 解决数据存储和业务逻辑问题。
相关推荐
&&Citrus9 小时前
【CPN学习笔记(二)】Chap2 非分层颜色 Petri 网——从一个简单协议开始读懂 CPN
笔记·学习·php·cpn·petri网
HXQ_晴天9 小时前
Linux 磁盘清理 & 查看常用指令笔记
笔记
小陈phd12 小时前
多模态大模型学习笔记(三十)—— 基于YOLO26 Pose实现车牌检测
笔记·学习
野指针YZZ13 小时前
XV6操作系统:trap机制学习笔记
笔记·学习
-许平安-15 小时前
MCP项目笔记九(插件 bacio-quote)
c++·笔记·ai·plugin·mcp
Xudde.15 小时前
班级作业笔记报告0x10
笔记·学习·安全·web安全·php
降临-max16 小时前
Git 协同开发与冲突解决
笔记·git
南境十里·墨染春水18 小时前
Linux学习进展 进程管理命令 及文件压缩解压
linux·运维·笔记·学习
航Hang*18 小时前
第2章:进阶Linux系统——第4节:配置与管理NFS服务器
linux·运维·服务器·笔记·学习·vmware
ZhiqianXia18 小时前
Pytorch 学习笔记(8): PyTorch FX
pytorch·笔记·学习