redis常见面试题

为什么redis单线程还是这么快?
1.绝大部分的请求是纯粹的内存操作(非常快速)
2.采用单线程,避免了不必要的额竞争条件和上下文切换,单线程指的是网络请求模块使用的是一个线程,即一个线程处理了所有网络请求。
3.非阻塞I/O-I/O多路复用,这样提高了redis的吞吐量,"多路"指的是多个网络连接,“复用”指的是复用同一个线程/采用多路复用I/O技术可以让单个线程高效地处理多个连接请求。
4.redis的瓶颈最有可能的是机器内存的大小或者网络带宽,以及操作不当的阻塞。
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

什么是缓存击穿,缓存穿透,缓存雪崩?
1.缓存击穿
在这里插入图片描述
解决方案:
1.设置key为永不过期(redis有内存淘汰机制)
2.job定时刷新一个缓存中的数据过期时间是30分钟,那么job每隔29分钟定时刷新数据,将数据库查到的数据更新到缓存中去。
3.多级缓存,可能会造成额外的缓存空间浪费。
4.锁的方式

缓存雪崩(大量key)
缓存雪崩是指在设置缓存时采用了相同的过期时间,倒是缓存在某一时间同时失效,导致所有的查询都落在了数据库上,造成了缓存雪崩。

解决方案:
在这里插入图片描述
缓存穿透(安全)
是指查询一个不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将会导致每次查询这个不存在的数据时都要去数据库查询,造成缓存穿透,在流量大时可能数据库就会挂掉,要是有人恶意用这个不存在的key攻击我们的应用,这就是漏洞。
解决方案:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值