一篇文章彻底搞懂 MySQL 和 Redis:原理、区别、项目用法全解析(建议收藏)
一篇文章彻底搞懂 MySQL 和 Redis原理、区别、项目用法全解析建议收藏在现代后端开发中MySQL 和 Redis 是两种最常用的数据存储系统。很多开发者虽然会使用它们但对底层原理和适用场景的理解往往比较模糊。本文将从实战角度出发通过原理分析、对比表格和可运行的代码示例帮你彻底搞懂这两兄弟。## 一、MySQL 和 Redis 的核心原理### 1.1 MySQL磁盘上的关系型数据库MySQL 是基于磁盘存储的关系型数据库管理系统RDBMS。它使用表结构存储数据支持 ACID 事务原子性、一致性、隔离性、持久性。其核心原理如下-存储引擎最常用的是 InnoDB支持行级锁、外键和 MVCC多版本并发控制。-索引机制默认使用 B 树索引适合范围查询和排序。-持久化数据直接写入磁盘通过 redo log 和 binlog 保证数据安全。### 1.2 Redis内存中的键值数据库Redis 是基于内存的键值数据库所有数据读写都在内存中完成因此速度极快微秒级。它的核心原理包括-单线程模型Redis 6.x 之前使用单线程处理命令避免了锁竞争。-数据结构丰富支持字符串、哈希、列表、集合、有序集合等。-持久化机制通过 RDB快照和 AOF追加日志将内存数据持久化到磁盘。## 二、MySQL 和 Redis 的核心区别| 特性 | MySQL | Redis ||---------------------|--------------------------------|--------------------------------|| 存储位置 | 磁盘 | 内存主 磁盘持久化 || 数据模型 | 关系表结构化 | 键值对多种数据结构 || 查询语言 | SQL | 命令如 GET、SET 等 || 事务支持 | 完整 ACID | 有限的事务MULTI/EXEC || 读写速度 | 慢毫秒级受磁盘 I/O 限制 | 极快微秒级内存操作 || 数据容量 | 可支持 TB 级 | 受内存限制通常 GB 级 || 典型场景 | 核心业务数据存储 | 缓存、会话、排行榜、计数器 |一句话总结MySQL 负责“存得住、查得准”Redis 负责“快得飞起”。## 三、项目实战Python 代码演示下面通过两个完整的 Python 示例展示如何在项目中使用 MySQL 和 Redis 协同工作。### 3.1 示例1MySQL 存储用户核心数据本示例演示如何使用 MySQL 存储用户注册信息并进行查询。python# 文件名mysql_demo.py# 依赖安装pip install pymysqlimport pymysql# 连接 MySQL 数据库请根据实际情况修改主机、用户、密码connection pymysql.connect( hostlocalhost, userroot, passwordyour_password, databasetest_db, charsetutf8mb4, cursorclasspymysql.cursors.DictCursor)try: with connection.cursor() as cursor: # 创建用户表如果不存在 create_table_sql CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; cursor.execute(create_table_sql) print(✅ 用户表创建成功) # 插入一条用户记录 insert_sql INSERT INTO users (username, email) VALUES (%s, %s) cursor.execute(insert_sql, (zhangsan, zhangsanexample.com)) connection.commit() print(✅ 用户数据插入成功) # 查询用户 select_sql SELECT * FROM users WHERE username %s cursor.execute(select_sql, (zhangsan,)) user cursor.fetchone() print(f✅ 查询结果{user})finally: connection.close()运行结果示例✅ 用户表创建成功✅ 用户数据插入成功✅ 查询结果{id: 1, username: zhangsan, email: zhangsanexample.com, created_at: datetime.datetime(...)}### 3.2 示例2Redis 缓存用户热点数据在电商场景中用户最近浏览的商品列表适合用 Redis 缓存。本示例模拟缓存用户浏览记录。python# 文件名redis_demo.py# 依赖安装pip install redisimport redisimport json# 连接 Redis默认端口 6379r redis.Redis(hostlocalhost, port6379, decode_responsesTrue)def add_recently_viewed(user_id: int, product_id: int): 将商品 ID 添加到用户的最近浏览列表中。 - 使用 Redis 列表List存储最新浏览放在左侧 - 限制最多保留 10 条记录 key fuser:{user_id}:recently_viewed # 从左侧插入LIFO 风格最新在最前 r.lpush(key, product_id) # 修剪列表只保留前 10 个元素 r.ltrim(key, 0, 9) # 设置过期时间为 1 小时3600 秒 r.expire(key, 3600)def get_recently_viewed(user_id: int) - list: 获取用户最近浏览的商品列表从新到旧 key fuser:{user_id}:recently_viewed # 获取列表全部元素从索引 0 到 -1 return r.lrange(key, 0, -1)# 模拟用户浏览商品user_id 1001for pid in [101, 202, 303, 404]: add_recently_viewed(user_id, pid) print(f✅ 浏览商品 {pid} 已记录)# 获取并打印最近浏览记录recent get_recently_viewed(user_id)print(f✅ 用户 {user_id} 最近浏览的商品{recent})# 输出示例[404, 303, 202, 101]运行结果示例✅ 浏览商品 101 已记录✅ 浏览商品 202 已记录✅ 浏览商品 303 已记录✅ 浏览商品 404 已记录✅ 用户 1001 最近浏览的商品[404, 303, 202, 101]## 四、项目中的典型用法组合在实际项目中MySQL 和 Redis 经常配合使用各司其职| 场景 | MySQL 的职责 | Redis 的职责 ||---------------------|----------------------------------|----------------------------------|| 用户注册/登录 | 存储用户密码哈希、个人信息 | 缓存登录态Session/Token || 商品详情页 | 存储商品描述、价格、库存等 | 缓存热门商品详情减少数据库查询 || 计数器点赞/访问 | 最终数据落盘用于报表 | 实时计数INCR 命令 || 排行榜 | 存储历史排名数据 | 实时排序Sorted Set || 消息队列 | 不推荐用 MySQL 做队列效率低 | 使用 List 或 Stream 实现简单队列 |经典模式先查 Redis如果命中缓存命中则直接返回如果未命中则查询 MySQL并将结果写入 Redis同时设置过期时间。这就是缓存穿透保护的基本思路。## 五、总结-MySQL 是地基适合存储需要持久化、支持复杂查询、保证数据一致性的核心业务数据。它是“慢但可靠”的代表。-Redis 是加速器适合存储高频访问、对时效性要求高、数据结构简单的数据。它是“快但内存贵”的代表。-项目最佳实践不要试图用 MySQL 解决所有问题比如做实时排行榜会非常吃力也不要滥用 Redis 存所有数据内存成本高且无 SQL 查询能力。合理搭配才能打造高效、稳定的系统。希望这篇文章能帮你建立清晰的知识框架。如果你在实际项目中遇到过 MySQL 或 Redis 的坑欢迎在评论区分享交流

相关新闻

Mini小主机All-in-one搭建教程2-安装Openwrt软路由系统

Mini小主机All-in-one搭建教程2-安装Openwrt软路由系统

Mini小主机All-in-one搭建教程2-安装Openwrt软路由系统 硬件介绍 在狗东买的 极摩客M2 到手价是2799元 具体配置如下: 酷睿英特尔11代标压ai7 11390H 64G1TB固态。 以下是安装Openwrt软路由系统的教程。 安装Openwrt软路由系统 下载镜像包 首先下载软路由的懒…

2026/7/23 18:13:27 阅读更多 →
Copilot Code Review 从固定 Reviewer 演进为可编程 Runtime,仓库控制面、Setup 供应链、Runner 资源和 MCP 工具同时被纳入审查决策

Copilot Code Review 从固定 Reviewer 演进为可编程 Runtime,仓库控制面、Setup 供应链、Runner 资源和 MCP 工具同时被纳入审查决策

Copilot Code Review 已成为可编程 Agent Runtime(2026-07-17 GitHub Changelog 解析) TL;DR 场景:GitHub 在 2026-07-17 一次性把 Copilot Code Review 的 Instructions、Setup Workflow、Firewall、Runner 与 Cloud Agent 网络策略全部向…

2026/7/23 18:13:27 阅读更多 →
ESXI 8.0虚拟机安装OpenWRT软路由详细教程

ESXI 8.0虚拟机安装OpenWRT软路由详细教程

简介 OpenWrt 是嵌入式的 Linux 路由器固件,OpenWrt在稳定运行的同时提供了强大的扩展能力,用户可以完全的定制属于自己的路由系统,满足不一样的个性化需求,本文讲解如何使用ESXI安装OpenWRT,打造属于自己的软路由。 本次安装使用的是haiibo/openwrt版本。 默认登录信息:…

2026/7/23 18:13:27 阅读更多 →

最新新闻

计算机毕业设计之基于springboot的农村产品供销平台

计算机毕业设计之基于springboot的农村产品供销平台

由于移动应用技术的持续性的快速发展,现实生活中人们大多数都是通过移动手机、电脑等智能设备来完成生活中的事务。因此,许多的人工传统行业也开始与互联网结合,不再一味的依靠人工手动,努力打造半自动数字化甚至是全自动数字化模…

2026/7/23 18:27:33 阅读更多 →
北京智能体新政里的 9 个新词,我逐个查了一遍

北京智能体新政里的 9 个新词,我逐个查了一遍

Harness Engineering、Token Economy、OPC、FDE、AIP、RaaS……这些过去只在论文、GitHub 和创业者 BP 里流通的词,第一次集体出现在官方政策文件中。 我不准备复述政策,只想回答:这些新词为什么现在出现?它们意味着什么&#xff…

2026/7/23 18:26:32 阅读更多 →
OpenWrt 安装Quagga 支持ospf Bgp等动态路由协议 软路由实测 系列四

OpenWrt 安装Quagga 支持ospf Bgp等动态路由协议 软路由实测 系列四

1 Quagga 是一个路由软件套件, 提供 OSPFv2,OSPFv3,RIP v1 和 v2,RIPng 和 BGP-4 的实现.2 web 登录安装#或者ssh登录安装opkg install quagga quagga-zebra quagga-bgpd quagga-watchquagga quagga-vtysh # reboot3 ssh 登录#重启服务 /etc/init.d/quagga restart #查看 roo…

2026/7/23 18:26:32 阅读更多 →
【MAI Gateway|魔芋企业AI网关】我们把 Token 成本从黑箱解放的全过程

【MAI Gateway|魔芋企业AI网关】我们把 Token 成本从黑箱解放的全过程

云时代有 FinOps,AI 时代需要 FinAPI。本文记录一家企业从"月底才知道花了多少钱"到"每一枚 Token 都有归属"的成本治理实践。 MaiGateway-企业级大模型API网关|多模型统一调度与AI流量治理平台MaiGateway企业级LLM API网关,统一兼容…

2026/7/23 18:26:32 阅读更多 →
计算机毕业设计之基于springboot的农产品直销平台的设计与实现

计算机毕业设计之基于springboot的农产品直销平台的设计与实现

随着互联网技术的飞速发展与普及,传统农产品销售模式面临挑战,信息不对称、流通环节多导致成本增加、农民收益受限等问题凸显。农产品直销平台应运而生,旨在利用互联网打破地域限制,减少中间环节,实现农产品从田间地头…

2026/7/23 18:26:32 阅读更多 →
OpenWrt 配置网络 (lan,wan口) 教程 x86/64平台 软路由实测 系列二

OpenWrt 配置网络 (lan,wan口) 教程 x86/64平台 软路由实测 系列二

openwrt 服务器安装,可参考:OpenWrt U盘安装使用 详细教程 x86/64平台 软路由实测 系列一-CSDN博客 1 主机有2个网卡,配置通过主机来访问外网 #web登录,打开网络配置 #lan 口配置IP等 #wan 口配置IP等 2 查看配置 rootOpenWrt:~# cat /etc/config/ne…

2026/7/23 18:26:32 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻