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简单了解。

Redis是什么,redis简述简单了解相关推荐

  1. Redis的安装配置及简单集群部署

    最近针对中铁一局项目,跟事业部讨论之后需要我们的KF平台能够接入一些开源的数据库,于是这两天研究了一下Redis的原理. 1. Redis的数据存储原理及简述 1.1Redis简述 Redis是一个基 ...

  2. python使用redis在实际场景使用_Python使用Redis实现作业调度系统(超简单)

    概述 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁 ...

  3. 使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第1部分

    在这篇文章中,我们将构建一个简单的用户界面. 数据将存储在Redis中. 为了与Redis交互,我们将使用Jedis库. CDI用于Depedency Injection,而Servlet 3.0用于 ...

  4. 使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第2部分

    在本文中,我们将重点介绍CDI和Servlet 3.0. 您可以在此处看到第1部分. 让我们从CDI开始. 当我开始撰写源自该系列的文章时,我并没有考虑撰写CDI. 真诚地说,我以前从未使用过. 这篇 ...

  5. python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用

    python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用 redispy安装 安装及简单使用:https://github.com/andymccurdy/ ...

  6. Redis在SpringBoot中的简单应用

    一.Redis是什么? 1 redis的由来: Salvatore • Sam Philippe对于公司的系统的性能不满意,亲手撸了一个缓存数据库,旨在提高其性能,就是现在的redis. 2 简单介绍 ...

  7. Redis 9 种数据结构简述

    目录 一.简介 二.Redis 内部编码 三.5种最基本数据结构 1. String(字符串) 1.1 内部编码 1.2 应用 1.3 数据结构 1.3.1 什么是简单动态字符串(SDS) 1.3.2 ...

  8. Redis的Windows安装和简单使用

    Redis的安装和简单使用 一.Redis的windows安装 二.Redis的启动和简单使用 2.1我们启动一下服务器端和客户端 2.2 redis的简单操作 2.3 如果你要设置密码,或者修改端口 ...

  9. springboot获取sessionid_Spring Boot 整合Redis, 用起来真简单!

    点击上方"Java技术前线",选择"置顶或者星标" 与你一起成长- 作者:java_老男孩  https://blog.51cto.com/14230003/2 ...

最新文章

  1. ActiveMQ在C#中的应用
  2. gsoap 学习 1-自己定义接口生成头文件
  3. 那天有个小孩跟我说LINQ(五)转载
  4. D3引擎用正则运算的方式,实现智能设备APP消息推送
  5. 面试官:聊一下你对MySQL索引实现原理?
  6. #530. 「LibreOJ β Round #5」最小倍数 二分 + 数论
  7. jquery报变量没定义错误的原因
  8. webService调用模式比较
  9. 「懒惰的美德」我用 python 写了个自动生成给文档生成索引的脚本
  10. 台达A2/B2伺服电机编码器改功率 台达A2/B2伺服电机编码修改
  11. 最新自动发卡网源码V7.0
  12. 关于quartus ii 破解失败的问题
  13. 计算机发展英文文献,计算机技术发展英文参考文献 计算机技术发展论文参考文献哪里找...
  14. windows 文件夹正在使用 “操作无法完成,因为其中的文件夹或文件已在另一程序中打开“ 解决办法
  15. JS中根据入职时间计算工龄
  16. 如何免费使用阿里云服务器?【一篇文章教会你,真香】
  17. oracle10g dblink优化,dblink如果很慢可以用这种方式优化
  18. 美团再杀入共享充电宝的阳谋
  19. linux上运行gfortran,linux – gfortran:在64位系统中编译32位可执行文件
  20. 《交互式程序设计 第2版》一1.2 交互领域中的编程

热门文章

  1. 自助收银、自助点餐等智能产品落地应用,助力智慧零售
  2. 仿乐享微信源码免费分享viicms
  3. HCIP---企业网的架构
  4. 静态HTML网页设计作品——电影介绍(11页) 学生HTML个人网页作业作品下载
  5. Tips-App瘦身的几点实践
  6. 冬奥会区块链亮点:数字雪花、冰墩墩NFT
  7. tp5 mysql读写分离_tp5主从数据库设置读写分离
  8. 学生赚源码 php,[精仿]全网最新高仿米赚APP、学生赚APP,带PHP后台+APP源码+全开源...
  9. vim编辑文件时[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
  10. Java 培训班出来之后的面试经历,很难!!