[TOC] #### 1. 前言 --- 上一讲说了 Redis 为什么快,这一讲来搞清楚一个更基本的问题:它到底是个啥 ? 我见过不少人,用了大半年 Redis,你让他描述一下 Redis 是什么,他支支吾吾说不清楚 其实不难,换个说法你就懂了 #### 2. Redis 是什么 --- Redis 全称 Remote Dictionary Server,翻译过来就是 “远程字典服务” 名字听着挺唬人,说白了就一件事:把数据存在内存里,用 Key-Value 的方式存取,速度非常快 你可以把它想成一个便签本,你在上面写一条信息,贴个标签,下次想找,报标签名,瞬间就翻到了 + MySQL 像一个档案室,东西全、但找起来得翻柜子 + Redis 像你桌上的便签本,东西少、但随手就拿到 一个管 “存得住”,一个管 “拿得快” #### 3. Redis 能存放什么数据 --- Redis 能存五种东西,先混个脸熟: + String 最基础的,存个字符串、存个数字都行。计数器、缓存、分布式锁,全靠它。 + Hash 存对象用的。一个用户有姓名、年龄、城市,用 Hash 存比 String 存 JSON 方便得多。 + List 有序的列表,能当队列用。任务排队、最新消息,都用它。 + Set 集合,自动去重。做共同好友、标签系统、抽奖去重特别合适。 + ZSet 带分数的集合,排行榜首选。每个元素有个分数,自动按分数排序。 后面每一讲都会深入展开,现在你只要知道 Redis 能存这五种东西就够了(这五种用的最多,其实还能存储其它类型数据) #### 4. Redis 和 MySQL 是什么关系 --- 一句话:不是替代,是配合。 + MySQL 负责存全量数据,数据量大,支持复杂查询,重启不丢数据 + Redis 负责缓存热点数据,数据量小,但读写飞快 打个比方: + 你去奶茶店,常点的那几杯,老板会提前准备好杯子和配料 + 你一来,直接加冰出杯,几秒钟搞定,不常点的,还是得从头做 Redis 就是那个 “提前准备好的杯子和配料”,MySQL 是后厨,什么都能做,但要等 Redis 是前台的操作台,常用的直接拿,快得很,常见架构就是这样: + 请求来了,先查 Redis,有就直接返回,没有再去 MySQL 查,查到后存一份到 Redis + 下次再查同样的数据,就直接走 Redis 了 #### 5. Redis 应用场景 --- Redis 在实际项目中能干什么 ? + 缓存:热点数据放 Redis,MySQL 压力直接降一半。 + 排行榜:ZSet 天然支持按分数排序,做排行榜几行代码搞定。 + 分布式锁:多台服务器抢同一个资源,比如秒杀扣库存,需要一把大家都能看到的锁。 + 计数器:文章阅读数、点赞数,一个 incr 命令就加一,原子操作,不用担心并发。 + Session 共享:用户登录状态存 Redis,不管请求打到哪台服务器,都能拿到登录信息。 这些场景后面都会实战,现在知道 “Redis 能干的事很多” 就行 #### 6. 本文小结 --- Redis 是基于内存的 Key-Value 数据库,配合 MySQL 使用 核心用途就四个字:快、缓、锁、数 + 快:读写速度快 + 缓:做缓存层 + 锁:分布式锁 + 数:计数器和排行榜