美文网首页
redis面试题

redis面试题

作者: 王小杰at2019 | 来源:发表于2019-07-18 10:13 被阅读0次

    redis数据结构有哪些?

    对象类型
    字符串
    列表
    集合
    有序集合(排名)
    字典


    位图(签到)
    地理空间
    =-=================
    数据结构
    动态字符串
    hash表
    链表
    跳跃表
    整数集合
    压缩列表

    Redis缓存穿透,缓存雪崩?

    穿透
    使用互斥锁排队
    接口限流与熔断、降级
    布隆过滤器
    雪崩
    缓存在同一时间内大量键过期(失效),接着来的一大波请求瞬间都落在了数据库中导致连接异常。
    加锁排队
    建立备份缓存(源数据不可用),缓存A和缓存B,A设置超时时间,B不设值超时时间,先从A读缓存,A没有读B,并且更新A缓存和B缓存
    设置缓存超时时间的时候加上一个随机的时间长度,比如这个缓存key的超时时间是固定的5分钟加上随机的2分钟,酱紫可从一定程度上避免雪崩问题;

    如何使用Redis来实现分布式锁?

    利用setnx+expire命令 (错误的做法)
    使用Lua脚本(包含setnx和expire两条指令)
    主从同步数据丢失
    Redis的并发竞争问题如何解决?
    利用redis自带的incr命令,
    可以使用独占锁的方式,
    使用乐观锁的方式进行解决
    针对同一key的资源,就先进行加锁
    redis的setnx实现内置的锁。

    Redis持久化的几种方式,优缺点是什么,怎么实现的?

    RDB
    save 900 1 #900秒内如果超过1个key被修改,则发起快照保存
    save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
    save 60 10000
    AOF
    appendfsync always
    appendfsync everysec
    appendfsync no

    Redis的缓存失效策略?

    1.避免集中失效
    Redis集群,高可用,原理?

    1. 哨兵
    2. 主从
      3.cluster
    3. proxy
      Redis缓存分片?
      服务端:cluster
      客户端:shard
      Redis的数据淘汰策略?
      volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
      volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
      volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
      allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
      allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
      no-enviction(驱逐):禁止驱逐数据

    redis队列应用场景?(AP)

    1、redis队列模式:可以实现B系统不在线状态下,A系统向队列中存数据,当B系统上线后,可以手动去取队列中的数据;
    2、redis订阅模式:可以实现A系统向队列中存数据,当B系统订阅了此队列并且在线时,可以自动监听此队列去取数据,但之前不在线时的数据无法获取;
    日志传输,不是高可靠的

    分布式使用场景(储存session)?

    session
    分布锁,重入锁,redlock,获取释放原子操作,是否拥有锁
    消息队列
    定时任务

    相关文章

      网友评论

          本文标题:redis面试题

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