Redis高频面试题及答案(肝一天的总结)

本文汇总了Redis面试常见问题,包括Redis的数据结构、持久化策略(RDB和AOF)、主从复制、哨兵模式、集群原理及其应用场景。深入探讨了Redis的哈希实现、哈希表、主从故障切换和高可用性保障。此外,还涵盖了Redis在实际应用中的过期淘汰机制、分布式锁实现及并发竞争解决方案。
摘要由CSDN通过智能技术生成

Redis面试题汇总

  • Redis语法

  1. redis支持的数据结构?

       答:支持字符串、哈希、list、set、soredset等数据结构

      2.redis如何实现string,这样实现有什么好处?

      答:摘选自《Redis的设计与实现》

 

好处:(1)可以常数复杂度获取字符串长度

(2)杜绝缓冲区溢出

(3)减少修改字符串时,带来的内存分配次数

   3.redis的hash怎么实现的?rehash过程讲一下;

答:如图所示,index就是索引位置

 

Rehash过程:哈希结构如图所示

 

(1)为ht[1]分配空间:空间大小如下:

     <1>若是扩展大小:分配大小=(第一个大于等于ht[0]*used*2)的2的n次方的数;<2>若是缩小大小:分配大小=(第一个大于等于ht[0]*used)的 2的n次方的数;

(2)将ht[0]保存的所有键值对重建计算计算索引值,保存到ht[1];

(3)全部迁移之后,将ht[0]置为空,释放ht[0],把ht[1]设置为ht[0],并在ht[1]新建一个空白哈希表,为下一次rehash准备。

  4.Redis的zset实现原理是什么?为什么不用红黑树来实现?

答:zset的底层结构同时使用了字典与跳跃表的;

红黑树是一种存在于内存中的结构,可以保证在最坏的情况下,对红黑树进行例如search,insert,以及delete等基本的动态集合操作的时间复杂度为O(lg n)。而跳跃表则是一种随机性的结构,所以在跳表中的搜索、插入、删除操作的时间复杂度就都为O(logn),但在最坏的情况下,它的时间复杂性又会变成O(n)

5.讲讲redis里面的哈希表?

答:哈希结构如图所示:

 

哈希表节点如图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值