苍穹外卖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 解决数据存储和业务逻辑问题。
相关推荐
想搞艺术的程序员2 小时前
Java Survivor区学习笔记
java·笔记·学习·垃圾回收
不能隔夜的咖喱2 小时前
all-in-rag零散的笔记(自存/持续更新)
笔记
-Springer-2 小时前
STM32 学习 —— 个人学习笔记9-2(USART串口数据包 & 串口收发 HEX 及 文本 数据包)
笔记·stm32·学习
celeste03102 小时前
Redis Summary
linux·运维·服务器·redis·笔记
zzh0812 小时前
nginx安全笔记
笔记·nginx·安全
困死,根本不会2 小时前
【C 语言】指针学习笔记:从底层原理到实战应用
c语言·开发语言·笔记·学习·算法
CHENJIAMIAN PRO3 小时前
3D Tiles 2.0 技术审查整理笔记
笔记·3d
kinl20184 小时前
cs2385_note0 (lec2-lec5)
笔记
John_ToDebug5 小时前
死锁案例:UI 线程阻塞等待跨进程 COM 注入
c++·windows·笔记