news 2026/4/21 7:27:16

苍穹外卖Day05笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
苍穹外卖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. 核心差异对比表

维度RedisMySQL
存储类型内存数据库(支持持久化)磁盘数据库(关系型)
数据结构支持字符串、哈希、列表、集合、有序集合等基于表结构,支持关系(一对一/一对多等)
读写性能读写速度极快(内存操作)读写速度适中(磁盘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 解决数据存储和业务逻辑问题。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 7:22:16

0421晨间日记

- 关键词 - 上午- 吃饭- 从五台山到大同 - 下午- 云冈石窟- 石头要好雕刻,就意味着容易损毁- 国家要统治- 人生来就是苦的,让你接受是苦的- 地主因为信佛,得到了好处的,愿意捐钱修建- 大同古城墙- 这个建立起来确实很壮观- 但是高…

作者头像 李华
网站建设 2026/4/21 7:19:21

Nginx负载均衡配置详解

NGINX负载均衡配置详解 准备工作 47.112.199.100 #反向代理服务器 47.112.199.101 #真实服务器1 47.112.199.102 #真实服务器2 1.反向代理服务器配置 worker_processes 1;events {worker_connections 1024; }http {# 定义后端服务器组upstream backend {# 默认轮询算法&#…

作者头像 李华
网站建设 2026/4/21 7:13:15

如何3分钟解决百度网盘提取码难题:baidupankey完全指南

如何3分钟解决百度网盘提取码难题:baidupankey完全指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾因找不到百度网盘提取码而错过重要资源?当朋友分享学习资料、同事发送工作文件&#xff…

作者头像 李华