有了MySQL为什么还要有Redis | 青训营笔记

301 阅读2分钟

这是我参与 第五届青训营 伴学笔记创作活动的第17天。

重点内容

本节课老师从后端开发的角度来介绍Redis的概念和常见数据结构,并结合具体场景设计案例进行演示,最后结合字节跳动内部企业实践讲了使用Redis的注意事项。

本篇文章我主要会把MySQL和Redis放在一起比较,讲解二者的不同和联系。

后端必备

数据库一直是公认的计算机基础、408必考,也是面试和工作必备,大家非常熟悉的数据库应该是关系型数据库MySQL,但是还有一种非关系型数据库也是非常重要 ( 可能学校不教,但是非常重要 ),没错,是大厂或者并发量稍微高点的场景都在用的Redis。

为什么还要有Redis

最基础的业务无非增删改查,或者说Redis和各种中间件,比如消息队列Kafka、RocketMQ、搜索引擎ES这些都是为了更好地增删改查,无非就是性能上快了很多,稳定性好了很多。

那不用Redis,只用MySQL行不行?

当然没问题,就好像我一天就喝一杯水,其他啥也不吃、啥也不喝,吃饭钱都省了,行不行?

行是行的,只不过不提倡而已。

试想一个场景。

掘金的主页显示的被点赞数、被阅读数如何实现的?

image.png

很明显就是通过业务层代码的逻辑进行计算,然后将计算结果写入数据库中,然后点击个人主页会进行一次 ( 或者多次 )数据查询,显示的数字就是查到的数据。

再细致点想,如果被点赞数是十万、百万级别的,那能每次访问都在MySQL中COUNT(*)计算总数吗?如果几十个、几百个用户同时访问,甚至在一秒内多次访问,MySQL能承受住吗?非常有可能把数据库打挂,数据库都挂了,整个系统的数据就无法显示出来。

所以Redis就出现了,Key-Value结构。可以把Key拼成用户的账号Id,通过账号Id在缓存中访问整个数据,而不用频繁访问db,如果缓存中访问不到,就去db里访问,并把查询到的结果放在缓存中,下次查询直接访问Redis缓存。

为什么Redis缓存就快?

因为Redis缓存是在内存里的,而MySQL是在磁盘上的,在磁盘上瞬间访问千万级请求,直接就能把数据库打挂咯!!!