精心整理的REDIS面试题

精心整理的REDIS面试题,第1张

精心整理的REDIS面试题 PHP面试题https://blog.csdn.net/hzbskak/article/details/120852249REDIS面试题https://blog.csdn.net/hzbskak/article/details/120852279MYSQL面试题https://blog.csdn.net/hzbskak/article/details/120852285NGINX面试题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等。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4024699.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-22
下一篇 2022-10-22

发表评论

登录后才能评论

评论列表(0条)

保存