栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

精心整理的REDIS面试题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

精心整理的REDIS面试题

PHP面试题https://blog.csdn.net/hzbskak/article/details/120852249
REDIS面试题https://blog.csdn.net/hzbskak/article/details/120852279
MYSQL面试题https://blog.csdn.net/hzbskak/article/details/120852285
NGINX面试题https://blog.csdn.net/hzbskak/article/details/120852271
1Redis和Memcached相比,有哪些优势?
  1. redis支持 string list set hash zset,memcached只支持string
  2. redis支持数据持久化,可以把内存中的数据持久化到硬盘上,memcached不支持,只能存到内存中,重启就没有数据了。
  3. redis使用的是单线程的多路IO复用机制
为什么用redis?

因为传统的关系型数据库已经不适用于所用的场景了,比如秒杀时的库存扣减,APP首页的访问流量高峰。很容易把数据库搞崩,所以就需要用到缓存中间件。目前市面上常用的中间件就是redis和mc。

2Redis为什么要把数据放到内存中?

如果不将数据放到内存中,磁盘的IO速度会严重影响性能。

Redis为什么这么快?
  1. redis大部分操作在内存中完成,
  2. redis是单线程的多路IO复用机制
Redis数据类型有哪些?分别应用于哪些场景?

string:缓存,做计数器,分布式系统升自增长ID

list:异步队列,任务轮询,文章列表

hash:记录博客中某个博主的页面访问量,名字,信息

set:微博抽奖,QQ标签,共同关注 好友(交集)

sorted set:排行榜

Redis的过期策略有哪些?大量key集中过期导致卡顿如何解决?

Redis过期策略采用的是惰性删除+定期删除策略。

大量key集中过期导致卡顿如何解决?

  • 在设置过期时间时,增加一个随机时间
持久化方式有哪些?有什么区别?

RDB做镜像全量持久化,AOF做增量持久化。因为RDB会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据,所以需要AOF来配合使用。在redis实例重启时,会使用RDB持久化文件重新构建内存,再使用AOF重放近期的操作指令来实现完整恢复重启之前的状态。

缓存雪崩、击穿、穿透如何解决?
  • 缓存雪崩:设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,全部转发到数据库中,导致数据库压力过大而崩溃。

    可以加给过期时间加一个随机数

  • 缓存击穿:某一个key在某个时间点被高并发的访问。

    可以采用互斥锁/分布锁。让一个线程去查询,其他线程等待

  • 缓存穿透:恶意请求不存在的key,导致缓存无法命中,每次都去查数据库

    如果数据库查不到就设置NULL并设置过期时间

    对参数做校验,不合法的参数直接return

    使用布隆过滤器判断数据是否存在

如何保证Redis命令的原子性?

原子性:多个命令要么全部成功,要么全部失败。
通过Lua脚本实现:多个操作写道lua脚本中,redis把整个lua脚本作为整体执行

有序集合是怎么排序的?

它给集合中的每一个元素设置分数,按照其分数进行排序,也不允许有重复值

缓存的原理

有缓存则读缓存,没缓存则读数据库然后做缓存

MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?

redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。

如果有大量的key需要设置同一时间过期,一般需要注意什么?

可能会出现缓存雪崩,我们一般需要在过期时间上加一个随机值。

那你使用过Redis分布式锁么,它是什么回事?

先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记释放。

使用过Redis做异步队列么,你是怎么用的?

使用list最为队列,rpush生产消息,lpop消费消息。当lpop没有消息的时候,要适当sleep一会再试。

如果对方追问可不可以不用sleep呢?

list还有个指令叫blpop,在没有消息的时候,它会阻塞住直到消息到来。

如果对方接着追问能不能生产一次消费多次呢?

使用pub/sub主题订阅者模式,可以实现 1:N 的消息队列。

如果对方继续追问 pub/sub有什么缺点?

在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如RocketMQ等。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/338015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号