名词百科
什么是数据库(MySQL / Redis)?
一句话定义
数据库是结构化存储与管理数据的系统。MySQL 是关系型数据库,用表与行组织数据、支持事务;Redis 是键值型内存数据库,常用于缓存、计数与队列。
它到底是什么
两者的定位不同:MySQL 是数据的最终归属地,数据持久化在磁盘,支持事务与复杂查询;Redis 是加速层,数据主要在内存,读写极快但容量受内存限制,持久化是可选能力。
因此判断某个数据该放哪:需要长期保存、需要事务保证、需要条件查询的放 MySQL;只需要临时保存、要求极高读写速度、能接受丢失的放 Redis。
怎么运作的
MySQL:数据按表组织,用 SQL 查询。核心能力是事务(ACID)——一组操作要么全成功要么全回滚,这是资金类业务的底线。索引决定查询速度,缺索引的查询在数据量增长后会急剧变慢。
Redis:以键值存储,支持字符串、哈希、列表、集合、有序集合等结构。常用于缓存热点数据、分布式锁、计数器、排行榜、简单队列。
配合方式:常见是「先查缓存,未命中再查数据库并回填」,写操作更新数据库后失效缓存。要处理缓存穿透(查不存在的数据)、击穿(热点过期瞬间)、雪崩(大批同时过期)。
容易混的几个概念
- 关系型与非关系型:前者有固定表结构与事务,后者更灵活但一致性保证弱。
- 缓存与数据库:前者是加速,后者是事实来源。
- 主从复制:读扩展手段,从库有延迟。
- 分库分表:数据量大到单库承受不住时才做的拆分。
常见问题
数据只存 Redis 行不行?
不行。Redis 容量受内存限制,持久化机制在异常时可能丢数据,且不支持复杂查询与强事务。作为事实来源会导致账务类数据不可靠。
缓存和数据库不一致怎么办?
常见做法是写数据库后删除缓存,而不是更新缓存;对一致性要求高的场景用延迟双删或订阅数据库变更日志。绝对一致需要牺牲性能,应按照业务容忍度选择。
E 后端架构 · 同组词条
RESTfulRESTful 是一种以资源为中心的接口设计风格,用 HTTP 方法与状态码表达操作;GraphQL 是一种查询语言,由客户端声明需要哪些字段,服务端一次返回。缓存缓存是把访问频繁的数据临时存放在更快的存储介质中,以减少对慢速数据源的访问。常见位置有浏览器、CDN、应用内存、Redis。APIAPI(Application Programming Interface,应用程序编程接口)是系统之间约定好的调用方式:调用方按约定传入参数,服务方返回结果。它是软件之间协作的接口。消息队列消息队列是用于在系统之间异步传递消息的中间件:生产者发送消息,消费者按自己的节奏处理。它解决的是解耦、削峰与异步三个问题。前端前端是用户直接看到并操作的界面部分,运行在浏览器或客户端中;后端是运行在服务器上的业务逻辑与数据存取部分。两者通过接口通信。微服务微服务架构是把一个应用拆成多个独立部署、独立运行的小服务,各自负责一块业务能力,通过接口或消息通信。每个服务可单独开发、发布和扩容。业务中台业务中台是把多个业务线共用的能力(用户、商品、订单、支付、营销)抽取成统一服务,供各业务线调用的架构思路。它强调的是能力复用,而不是技术统一。多租户多租户架构是一套系统同时服务多个客户(租户),各租户的数据相互隔离、配置互不影响。它是 SaaS 能把成本压低的根本原因。