菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
1
5

为什么要有Redis?

原创
05/13 14:22
阅读数 269

在学习Redis之前我们要来想明白一个问题,为什么要有Redis,Redis帮我们解决了什么实际的问题,只有知道Redis的用途我们才能学好Redis。

Redis是什么?

Redis是一个开源性能超强Key-Value存储系统,他是中高级程序员必须要会的一项技能,他不仅能帮你提升项目访问速度,也可以帮你解决一些比较复杂的问题,最典型的就是解决性能问题。

Redis为什么快?

image.png
首先Redis是将数据储存在内存中的,通常情况下每秒读写次数达到千万级别,Redis是Key-Value数据库,通过一个精确的Key对内存中的数据执行查看,而不是写一个复杂的SQL语言,不仅仅读取数据速度快,查询数据的速度同样很快。

解决性能问题

Web1.0的时代,数据访问量很有限,单个服务器可以解决所有问题。免费的开源软件的组合成为了主流,比如说:LNMP,LAMP,最初的淘宝、刚上线时的滴滴,都是在采用这种架构形式。
image.png
随着WEB2.0的到来,服务器访问压力增大,数据库数据量比较大,查询速度变慢,如果还是在单服务器的情况下,优化数据库压力最好的方式就是使用Redis。
image.png
Redis的引入可以减少MySQL的压力,我们常说的二八定律对于编程的问题是,80%全是查询操作,20%的修改添加和删除。而这80%的查询通常又集中在20%的业务上,比如说首页数据,列表数据等高频访问的数据,这些数据我们可以放到Redis里面,当一个请求进来,程序代码先判断Redis当中是否有对应的数据,如果有直接返回,如果没有查询数据库,存储到Redis中,在将数据进行放回。而下次请求进来Redis中就有了相应的数据。这就是我们常说的Redis的主要功能缓存,以及解决性能的问题。

那么当单台服务器无法承受负载的时候,通常我们会上集群。看下面这张图。
image.png
在现在前后端分离的趋势下,多服务器集群需要解决一些核心的问题。

  1. JWT Token 存储在哪? 用户请求不同的服务器怎么确定用户是谁?
  2. 如果是Session,Session存储在哪?

如果将 JWT Token 或者Session 存储在文件中或者数据中,用户每次访问都需要查询当前用户是谁,会产生大量的IO操作 服务器负载降低,因为查询Token 或者Session的数据是一个高频次的操作,通常类似这种高频的操作,使用Redis缓存是一个不错的方案。

解决业务问题

Redis不仅仅能够帮助我们解决性能问题,也可以解决特定的业务问题,在这里那我举几个简单的例子,在Redis实战部分会有更多的案例给大家讲解。

案例1 抖音点赞的问题思考。

抖音然他吞噬着我们大量的时间,但他无疑是一个比较成功的APP。一个抖音大V拥有超百万粉丝,甚至千万粉丝。如果这样的一个大V发布了一个新的视频,在短时间内会有几万甚至于几十万的点赞,如果是你,记录这些点赞数。

一个新手的正常思维是,发布一个视频,在数据库中插入一条数据,这一条数据中有一个字段是点赞数,当用户点一个赞,这个字段就加1。并且在出入一条数据,记录哪个用户给哪个视频点了赞。这没有问题,功能完全是可以实现的,但是在短时间内产生了几十万次点赞,那我们就修改几十万次数据库吗?要频繁的插入数据库中几十万条数据吗?在没有并发的小项目上这么做是完全看不到问题的,但是如果想抖音甚至于只有抖音百分之一用户级别的项目上,一定是会出现性能问题的。
当然解决这个问题不仅仅只有使用Redis 一个方案,但使用Redis无疑是成本最低 效率最高的方案之一。
关于这个问题的答案我将在后面章节中揭晓。

发表评论

0/200

热门评论

落尽

sfddfsa

0 0
落尽

asdasdas

0 0
落尽

adxdas

0 0
落尽

asdasda

0 0
落尽

asdasda

0 0
1 点赞
5 评论
收藏
为你推荐 换一批