首页 > 数据库 >redis的常见面试题

redis的常见面试题

时间:2022-08-16 00:44:06浏览次数:60  
标签:面试题 缓存 过期 常见 redis 内存 mysql 数据

为什么要用redis

减少了mysql数据库的压力,
在这之前mysql一个人承受,然后要承受大量的数据请求,
大部分都是读操作。而且经常都是重复查一个东西,浪费了很多时间进行磁盘io

redis将数据都存在内存中,而不用去进行磁盘io操作。节省了很多时间

内存和硬盘的区别:

redis数据储存在内存,mysql数据储存在硬盘,所以我们要了解一下内存和硬盘的概念:

  • 内存是计算机中硬盘数据和CPU数据交换的中转站,属于临时存储器,随操作随时改写存储内容,断电后,内存中的信息全部丢失,存储介质是集成块的RAM类型,电子读写,存储容量较小。

  • 硬盘的存储介质是磁存储,靠磁头读写。硬盘可以长期存储数据,不受断电影响。存储容量大。

如何解决redis缓存数据过多

给缓存的内容加上一个过期时间,由应用程序设置
使用随机算法随机筛选出一些缓存,如果过期则删除 (定期删除)
在查询的时候,查到的刚好是过期的缓存数据,则直接删除(被动式触发/惰性删除)
内存不足时,内存淘汰策略
内存淘汰策略
解决方式: 定时删除 + 惰性删除 + 内存淘汰

缓存穿透

接收到请求,发现缓存数据不存在,同时mysql也没有这个数据
这时候每次碰到查这种数据请求的时候都要再次发送给mysql
这时候就要用到: 布隆过滤器

缓存击穿

一个热点数据到了过期时间,删掉的同时 有一大波查询该数据请求刚好发了过来,所以只能将请求发送给mysql

缓存雪崩

就是缓存击穿的升级版。
一大波数据刚好过期,然后同时又接收到了这些数据的大量查询请求,
就将一大波请求发送到了mysql那里。mysql直接干崩了

解决方法: 过期时间分散随机 + 热点数据永不过期
1、让应用程序在 设置缓存过期时间的时候 设置得更加分散,不那么集中,这就不会导致一大波缓存数据在同一时间过期。可以设置随机过期
2、设置热点数据永不过期

标签:面试题,缓存,过期,常见,redis,内存,mysql,数据
From: https://www.cnblogs.com/maomao777/p/16590216.html

相关文章

  • Redis---bitmap位图
    1.前言在平时开发过程中,经常会有一些bool类型数据需要存取。比如记录用户一年内签到的次数,签了是1,没签是0。如果使用key-value来存储,那么每个用户都要记录365次,当......
  • Redis---数值操作命令
    1.前言Redisstring类型提供了一些专门操作数值的命令,比如INCRBY(自增)、DECRBR(自减)、INCR(加1)和DECR(减1)等命令。数值操作,同样有特定的应用场景,比如常见的点赞、取消点......
  • 常见docker命令(四)-本地镜像管理
    查看镜像dockerimagesdockerrmi-删除镜像删除mynginx最新镜像dockerrmi-fmynginx:latestdockertag-标记本地镜像,将其归入某个仓库开发一个新地mynginx版本,将其打标......
  • golang之Redis
    Redis是一个基于内存的非关系型数据库,在项目开发中使用非常广泛,Go语言操作Redis需要使用三方包,我们选择支持Redis集群和Redis哨兵的go-redis包来讲述Go语言如......
  • python连接mysql与redis(ssh方式)
    python如何连接数据库(SSH方式)性能测试时,有个支付订单的场景,需要用到已生成的订单code,如何获取订单code?一,通过Jmeter连接数据库获取。二,直接mysql导出数据我这里是使用......
  • nodejs环境下使用redis(基础入门)
    redis-server--service-start 启动redis服务winptyredis-cli进入redis-cli,可查看存入的数据redis环境配好之后,先[email protected]安装nodejs环境下的redis库......
  • Vue面试题-组件间通信方式
    父子组件:props(父传子)$emit/$on(子传父) $on已被Vue3废弃$parent/$children$children已被Vue3废弃ref隔代组件:透传:$attrs/$listeners$listners已被Vue3废......
  • Linux安装Redis服务
    一、安装1、进入linux系统,选择下载的目录,输入命令“wgethttp://download.redis.io/releases/redis-5.0.5.tar.gz” 2、解压下载的压缩包“tarxzfredis-5.0.5.tar.g......
  • 【java面试题】final
    【java面试题】final final的作用final的含义是最终的修饰类:表示类不可被继承修饰方法:表示方法不可被子类重写,但是可以重载修饰变量:表示变量一旦被赋值就不......
  • 【java面试题】 == 和 equals
    【java面试题】==和equals "=="比较的机制:==对比的是栈中的值基本数据类型是变量值,也就是inti=1;在栈中存放的是i=1,==比较的也是这个数值1引用类型是堆中......