美文网首页
Redis杂项

Redis杂项

作者: 风雪_夜归人 | 来源:发表于2023-11-10 13:23 被阅读0次

    常见面试题

    Redis支持的数据类型?

    Redis有哪几种数据淘汰策略?

    noeviction :不删除策略,达到最大内存限制时,如果需要更多内存,直接返回错误信息。大多数命令都会导致占用更多的内存
    2.allkeys-lru:所有key通用;优先删除最近最少使用(less recently used,LRU)的key
    3.volatile-lru:优先删除最近最少使用(less recently used,LRU)的key(限于会过期的key)
    4.allkeys-random:所有key通用;随机删除一部分key
    5.volatile-random:随机删除一部分key(限于会过期的key)
    6.volatile-ttl:优先删除剩余时间(time to live,TTL)短的key(限于会过期的key)
    

    什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?

    1. RDB + AOF
    • Redis有哪些架构模式?讲讲各自的特点?
      1.主从 + 哨兵

    使用过Redis分布式锁吗?它是如何实现的?

    1.SETNX

    使用Redis做异步队列吗?是你怎么用的?有什么缺点?

    1.lpush:从左侧存入数据 -》 栈结构 lpop从最外侧弹出
    2.rpush:从右侧存入数据 -》队列接口 lpop从最外侧弹出

    什么是缓存穿透?如何避免?什么是缓存雪崩?如何避免?

    缓存穿透
    • 访问一个不存在的key,缓存不起作用,请求会穿透到DB,流量大时DB会挂掉
    解决方案:
    • 采用布隆过滤器,使用一个足够大的bigmap,用于存储可能访问的key,不存在的key直接被过滤。
    • 缓存数据库都查不到的话,把为空的结果写入DB一份
    缓存雪崩
    • 大量的key设置了相同的过期时间,导致缓存在同一时刻全部失效,造成DB请求量过大,导致崩溃
    解决方案:
    • 给缓存设置过期时间的基础上,再加上个随机时间,使每个key过期时间错开。
    缓存击穿
    • 一个存在的key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增
    解决方案
    • 在访问key之前,采用setnx(set if not exists)来设置另一个短期key来锁住当前key的访问,访问结束再删除该短期key

    相关文章

      网友评论

          本文标题:Redis杂项

          本文链接:https://www.haomeiwen.com/subject/npeaidtx.html