redis面试八股文

1.redis中rehash操作
hashmap中的rehash操作:当添加一个元素,达到了阈值,启动rehash操作,直接申请一个大于原先旧数组俩倍大小的新数组。比如原先是4,则申请8;原先是7,则申请16 。必须是2的整数次幂。
然后遍历原先旧数组,重新在新数组计算一下hash。存在的问题就是,在rehash的时候此时是不能进行新的操作的,会变成阻塞状态,如果需要迁移的数据量大,则很容易变得不可用。
redis中采用的rehash操作是渐进式的。redis底层维护俩个数组ht[0],ht[1];rehashiidx 等于-1,表示未进行rehash操作,否则表示正在进行rehash操作。在 每次crud的时候,会把rehashidx指向的索引上面的所有元素都重新计算hash然后迁移到新数组,直到原数组的元素全部迁移完成,交换俩个数组的指针,数组2号置为null。
2.redis的持久化策略
   aof和rdb
   aof是记录命令的方式,命令执行完然后增量的方式写日志,如果最后记录的文件大会存在重写的方式,把几条日志合并到一起。
   三种写回策略:(一般使用2,秒级丢失)
  1. always,同步写回,每个子命令执行完,都立即将日志写回磁盘。

  2. everysec,每个命令执行完,只是先把日志写到AOF内存缓冲区,每隔一秒同步到磁盘。

  3. no:只是先把日志写到AOF内存缓冲区,有操作系统去决定何时写入磁盘。
   rdb是快照的方式,保存当前时刻数据库中的数据。优点是宕机后能快速恢复,但是是分钟级的数据丢失。
   使用save和bgsave命令,前者是同步的,会阻塞当前线程;后者是异步的,重新fork一个新线程执行操作。

全部评论
感谢大神的面试八股文分享🤗
点赞 回复 分享
发布于 2022-08-07 16:41

相关推荐

05-10 16:15
已编辑
门头沟学院 Java
医疗类的公司,主要业务也是和医疗有关的。不过我项目一个是代驾,一个是IM,没啥相关的,全程聊天,没啥八股更没手撕,只能整理出一些问题。1.自我介绍————xxx学校,java学习路线,学习接触了什么项目,算法刷多少,八股背多少,我上来就说我java路线走完了,八股背很多。2.介绍一下项目———b站学的,跟着做的,做过大街类项目外卖点评,音视频和简历上的代驾和IM等3.项目是怎么开发的,怎么学的———跟着视频学的4.前端是自己开发的吗———不是,项目给的模板。我说我前端就学几个月,更习惯用trae,面试官笑了5.IM是怎么实现的———netty或者spring都有websocket,用websocket实现。没多问了6.项目中支付是怎么做的———我说支付一般是微信,微信支付个人开不了,一般是模拟支付。7.谈谈你对future的理解———异步获取任务结果,runnable任务callable的get8.如果支付链路很长怎么办———completefuture处理支付前的业务逻辑,然后支付用mq异步9.redis和mongodb在项目中怎么用的———redis保存临时的经纬度,mongodb持久化用10.哪些地方用的回调———忘记怎么答了11.项目怎么部署的,本机还是虚拟机———虚拟机,Linux,用docker搜一下很快12.有做过多节点部署吗?———nginx吗,有了解,但我没真做过13.jvm了解吗———我说我八股贼熟,随便问,然后面试官让说下gc,我说那就说下cms和g1,然后就是关于这2个垃圾回收器的特点14.你对我们公司了解吗———了解(看过ssob主页)15.学校在哪里,实习怎么办———我说租房...下面开始我的反问1.实习生主要干什么———完成我们分配拆解的项目需求...2.部门业务是什么,有多少开发员工———医疗....,大概有30多个开发3.实习福利待遇———面试官自己不清楚4.公司加班调休策略———加班算调休,可以替换第二天的时间整个面试不到半小时,感觉可能项目不匹配没啥好问题   
查看34道真题和解析 面试问题记录
点赞 评论 收藏
分享
评论
1
12
分享

创作者周榜

更多
牛客网
牛客企业服务