【面试 redis】【第十二篇】redis的相关面试问题

redis的相关面试问题

 ===============================================================================

1.redis如何实现高并发

  ===============================================================================

2.redis 缓存穿透、缓存雪崩、缓存击穿

https://baijiahao.baidu.com/s?id=1619572269435584821&wfr=spider&for=pc

https://www.cnblogs.com/duanxz/p/3788366.html

https://www.cnblogs.com/dream-to-pku/p/9153999.html

这些问题的处理核心思想,就是尽可能的减小DB的访问压力!!

缓存穿透:无效ID,在redis缓存中查不到,去查询DB,造成DB压力增大。

解决方法:

  1》解决方法1:布隆过滤器,提供一个很大的Bit-Map,提供多个hash函数,分别对查询参数值【比如UUID】,进行求hash,然后分别对多个hash结果,在对应位置对比是否全为1或者某个位置为0,

          一旦有一个位置标识为0,表示本次查询UUID,不存在于缓存,再去查询DB.

    起到一个再过滤的效果。

  2》解决方法2:把无效的ID,也在redis缓存起来,并设置一个很短的超时时间。

缓存雪崩:缓存同一时间批量失效,导致大量的访问直接访问DB

解决方法:

  在做缓存时候,就做固定失效时间+随机时间段,保证所有的缓存不会同一时间失效

缓存击穿:在缓存失效的时候,会有高并发访问失效的缓存【热点数据】

解决方法:

  最简单的解决方法,就是将热点数据设置永不超时!

  第二个解决方法:对访问的Key加上互斥锁,请求的Key如果不存在,则加锁,去数据库取,新请求过来,如果相同KEy,则暂停10s再去缓存取值;如果Key不同,则直接去缓存取!

 ===============================================================================

3.redis的两种持久化策略  RDB和AOF

 ===============================================================================

猜你喜欢

转载自www.cnblogs.com/sxdcgaq8080/p/10682525.html