Redis是什么,redis简述简单了解

Redis是什么?

或者说Redis是怎么出现的?

一、压力山大的MySQL

在redis没出现之前,Mysql肩负着数据存储的重担。慢慢随着数据量和访问量的剧增,Mysql性能开始显著下降。
又因为大部分请求访问都是读数据操作,而且经常重复性的查询同一个东西,导致Mysql浪费大量的时间去进行磁盘I/O(查询磁盘中的对应数据)。
后有人提出可以效仿CPU的缓存机制,给Mysql也加一个缓存,于是乎redis应声而出。

二、数据请求流程

首先应用程序发送请求到Mysql,Mysql查找完成之后再将结果返回给应用程序。之后应用程序在redis里做一个缓存,把本次查询到的数据缓存一份放进redis里,这样以后再查询同一个东西时,会对redis先进行读数据操作,redis找到这条数据就直接返回给应用程序。
如果找不到的话,返回null,这时应用程序没拿到想要的东西,就会去找Mysql要数据。这个过程大大的减轻了Mysql的压力,这就是redis,为了方便使用,redis支持很多数据结构的存储。
就是说在redis出现之前一直是Mysql一个数据库在工作,redis出现后是两个数据库(redis与Mysql)分工合作,大大的提供了数据访问层的效率。

三、Redis数据库?Mysql数据库?

这俩数据库最大的区别就是:redis将数据存到内存中,性能高、容量小。Mysql将数据存到磁盘里,性能低、容量大。这俩哥们儿同时使用,正好相互弥补各自的缺点,优势互补。
于是几乎Redis所有的问题都是跟Mysql优势互补的过程中产生的。几乎Redis所有的问题解决策略、解决方法,都是为了和Mysql优势互补。

四、Redis能存哪些类型的数据?

Redis数据库类型及场景:

  • 字符串String类型:比较常用,普通字符串
  • 哈希hash类型:比较适合存储对象
  • 列表list类型:按照插入数据的顺序排序,支持重复元素的存储
  • 无序集合set类型:存储无序集合,不支持存储重复元素
  • 有序集合zset类型:集合中的每一个元素都会关联一个score,redis可以通过这个score实现对集合元素的升序排序,而且不支持存储重复元素。

五、Redis的经典问题

  1. 穿透(应用程序无结果请求的查询)
    redis很好的解决了应用程序重复查询,减轻Mysql压力的操作。然而并不是所有的查询都是有结果的,一旦出现应用程序发出没有结果的请求时,虽然查不到结果,但Mysql还是会浪费时间去对此请求进行磁盘I/O操作,就是如此的包容且宠爱。因为没有结果返回给应用程序,所以redis就不能进行缓存,redis不能进行缓存,当下次这个请求还来的时候,Mysql还是会全盘检索,循环往复,直至再次拖垮Mysql,这样的话就造成了redis的缓存穿透。这样的结果redis能答应吗,不能答应,解决方法就是使用布隆过滤器来进行辅助工作了,为什么要用布隆过滤器呢,因为你可以完全信任布隆。

  2. 击穿(应用程序热点请求的查询)
    热点数据到了过期时间被redis删除,应用程序向redis要数据时发现没有,只能直接向Mysql发送请求,让Mysql进行查询操作,因为是热点数据,所以访问量一般不会太小,短时间内Mysql的性能压力一下子大了起来,造成速度下降卡顿等性能问题。这个过程就是redis击穿现象,如果不及时处理,很有可能造成雪崩,导致Mysql瘫痪。

  3. 雪崩(应用程序大批量的请求查询)
    redis中大批量数据同时过期被redis主动同时删除,这时应用程序发送请求,出现更大一波数据流量访问,直接访问Mysql,拖垮MySQL性能,直接将MySQL干趴,这种现象叫做雪崩。解决方法:将键值的过期时间设置成随机均匀分布,并将热点数据设置永不过期。

六、Redis的持久化策略

redis持久化策略

  • redis,一个基于内存的key-value储存库,因为将数据存在内存,故而性能比关系型数据库强得多,但也因为其数据是存在内存中,这也意味着一旦计算机宕机或者断电,那将会失去已经存储的数据,而关系型数据库Mysql的持久性,它就不会出现这样的情况,因为Mysql数据是直接存在磁盘里。因此我们需要对redis进行持久化操作,让redis的数据变得更持久,弥补这一缺点,此过程,redis提供了两个持久化策略:RDB与AOF
  • 操作目标就是将宕机停电易丢失的部分内存数据,转存到能够永久存储的磁盘设备上。

注:本文仅为Redis简单了解。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值