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

前言

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

数据结构

字符串-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,删之前进行判断
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芒果-橙

谢谢啦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值