redis的面试题

1. redis内存淘汰策略?

  1.  volatile-lru:从已设置过期时间的数据集(server. db[i]. expires)中挑选最近最少使用的数据淘汰。
  2. volatile-ttl:从已设置过期时间的数据集(server. db[i]. expires)中挑选将要过期的数据淘汰。
  3. volatile-random:从已设置过期时间的数据集(server. db[i]. expires)中任意选择数据淘汰。
  4. allkeys-lru:从数据集(server. db[i]. dict)中挑选最近最少使用的数据淘汰。
  5. allkeys-random:从数据集(server. db[i]. dict)中任意选择数据淘汰。
  6. no-enviction(驱逐):禁止驱逐数据。

2. redis如何保证缓存数据与数据库数据同步?

  1.  设计合理的过期时间
  2. 进行增删改操作时同步删除redis缓存数据

3. 什么是缓存穿透以及如何解决?

缓存穿透:查询的数据在数据库中不存在缓存中也不存在,这时有人恶意访问这种数据,请求到达数据库。

解决方案:

  1. 在controller层校验数据,对一些不合法的数据过滤掉。
  2.  使用bloom布隆过滤器。
  3. 存放一个空对象,并且设置过期时间不能超过5分钟。

4. 什么是缓存击穿以及如何解决?

缓存击穿: 数据库中存在,但是缓存中该数据过期了。这是有大量的请求访问该过期的数据。压力顶到数据库

解决方案:

  1. 使用互斥锁。
  2. 设置永不过期。

5. 什么是缓存雪崩以及如何解决?

缓存雪崩: 当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力

解决方案:

  1. 设置散列的过期时间。
  2. 预热数据 [3]搭建redis集群。
  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值