【面试需了解之Redis基础】Redis数据结构、集群策略、常见面试题

前言

Redis基础:数据结构、集群策略、常见面试题

文章目录

    • 前言
    • 数据结构
      • 字符串-string
      • 哈希表-hash
      • 列表-list
      • 集合-set
      • 有序集合-zset
    • 集群策略
      • 主从模式
      • 哨兵模式
      • Cluster模式
    • 常见面试题

数据结构

字符串-string

用来存储最简单的数据缓存,可以缓存某个简单的字符串,也可以缓存某个json格式的字符串,Redis分布式锁的实现就利用了这种数据结构,还可以实现计数器、session共享、分布式ID

哈希表-hash

用来存储一些键值对(key-value),更适合用来存储对象

列表-list

通过命令的组合,既可以当做栈,也可以当做队列使用,可以用来缓存消息流数据(公众号、微博)

集合-set

和列表类似,可以存储多个元素,但是不能重复,集合可以进行交集、并集、差集操作,从而实现类似我和某人共同关注的人朋友圈点赞等功能

有序集合-zset

可以设置顺序,实现类似排行榜功能

集群策略

主从模式

主库可以读写,并且会和从库进行数据同步。这种模式下,客户端直接连主库或某个从库,但是主库或从库宕机后,客户端需要手动修改IP,另外这种模式也比较难以扩容,整个集群所能存储的数据受限于某台机器的内存容量,所以不能支持特大数据量

哨兵模式

在主从的基础上新增了哨兵节点。主库节点宕机后,哨兵会发现主库节点宕机,然后在从库中选择一个库作为主库,另外哨兵也可以做集群,从而保证一旦某一个哨兵节点宕机后,还有其他哨兵节点可以继续工作。

这种模式可以比较好的保证Redis集群的高可用,但是仍然不能很好的解决Redis的容量上限问题

Cluster模式

支持多主多从,这种模式会按照key进行槽位的分配,可以使得不同的key分散到不同的主节点,利用这种模式可以使得整个集群支持更大的数据容量,同时每个主节点可以拥有自己的多个从节点,如果该主节点宕机,会从它的从节点中选举一个新的主节点

常见面试题

  1. redis了解多少,简单说明下

  2. redis的数据结构有哪些

  3. redis缓存穿透

    • 问题:查询一个一定不存在的数据,会去数据库中读取

    • 方案:布隆过滤器

  4. 什么场景会缓存穿透、击穿、雪崩

    • 穿透:查询一个一定不存在的数据,会去数据库中读取==》布隆过滤器
    • 击穿:某个时间点一个热点key过期,此时有大量请求==》互斥锁
    • 雪崩:缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB==》失效时间设置随机
  5. Redis分布式锁怎么防止死锁

    • 死锁:某个线程挂掉

    • 设置过期时间(+自动续期)

  6. Redis分布式锁怎么防止误删

    • 误删:过期时间设置不准确,删除了其他的锁
    • 使用UUID设置锁的value,删之前进行判断

你可能感兴趣的:(#,面试知识点,面试,redis,数据结构,java)