Redis基础-----真实面试题汇总(含答案)

面试题1. 知道redis为什么这么快吗?

  1. 首先它是基于单线程的模型,保证了每次操作的原子性,同时也减少了线程上下文之间的切换和竞争。
  2. 然后它的IO是采用了多路复用的IO模型来实现的,
  3. 然后是他是基于内存数据库来进行存和读取数据的。
  4. 另外,数据结构也帮了不少忙,Redis全程使用hash结构,读取速度快,还有一些特殊的数据结构,对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度
  5. 使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求

面试题2. 说一下Redis的持久化的方式?

AOF的持久化方式:

在这里插入图片描述

AOF持久化的原理:
在这里插入图片描述

RDB的持久化方式:

  • 首先RDB是一种全量式的持久化方式,通过记录某个时间点全部数据的快照,
    在这里插入图片描述

RDB的持久化的原理是什么怎么实现的(其实就是BGSAVE的原理)

  1. 首先当你执行了BGSAVE命令之后,redis服务器会先去检查有没有AOF或者是RDB的子进程是不是存在,如果存在的话,就直接返回错误(这个就是防止子进程的竞争)
  2. 如果不存在的话就继续执行持久化,然后这个时候会去调用底层方法rdbSaveBackground(),然后系统就回去调用fork指令来创建一个进程(其实这里是利用了写时复制的思想也就是Copy-on-Write),下面有解释,其实这个我们不难发现在java中的线程安全的CopyOnWriteArrayList也是利用了这种写时复制的思想。
    在这里插入图片描述

那么什么时候会触发RDB的持久化呢?
在这里插入图片描述
那么RDB的缺点是什么?
在这里插入图片描述

面试题3. AOF和RDB之间的优缺点的对比?

在这里插入图片描述

面试题4. 如果不想让Redis中的数据在持久话的时候一秒的数据都不丢失怎么办?

面试题5. 说一下Redis中的一致性哈希算法?

什么是一致性hash算法?

  • 其实就是对一个2的32次方进行取模,把0 -----2^32方-1围成了一个大的虚拟的圆环,然后再Redis的集群中,为了保证redis的key均匀分布在不同的节点上,就通过这个一致性哈希算法来进行把key给均匀的分散在不同的redis服务器节点上
    在这里插入图片描述
    即使使用一致性哈希算法的话,其实当如果只有少数的服务器节点使用的时候,还是会有一些问题出现,比如数据的倾斜问题?
    在这里插入图片描述
    为了解决上述的那个数据倾斜的问题,在Redis中还是提供了对应的解决方案,使用了虚拟服务器节点,来使节点进行均匀分布:
    在这里插入图片描述

面试题4. 说一下Redis中的RDB的是具体如何实现的?

面试题5. Redis里面hash和Java里面的Hash的区别?

面试题6. Redis(String是如何插入到Redis)

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值