京东二面,Redis 为什么这么快?

京东二面:Redis为什么快?我说Redis是纯内存访问的,然后他对我笑了笑。。。。。。 Redis通过结合纯内存操作、单线程模型、IO多路复用技术和一系列精心设计的高效数据结构,实现了在高并发、低延迟场景下的优秀性能表现。 阅读详情

面试开始

面试官: 今天聊聊 Redis 吧面试官 : 都说 Redis 速度快,那 Redis 为什么这么快呢?

大彬 :主要是因为以下几点原因:

  • 基于内存 :Redis 是使用内存存储,没有磁盘 IO 上的开销。数据存在内存中,读写速度快。

  • 单线程实现 ( Redis 6.0 以前):Redis 使用单个线程处理请求,避免了多个线程之间线程切换和锁资源争用的开销。

  • IO 多路复用模型 :Redis 采用 IO 多路复用技术。Redis 使用单线程来轮询描述符,将数据库的操作都转换成了事件,不在网络 I/O 上浪费过多的时间。

  • 高效的数据结构 :Redis 每种数据类型底层都做了优化,目的就是为了追求更快的速度。

面试官: 嗯,刚说到 Redis 是单线程实现的,你认为 Redis 为何选择单线程呢?

独白:emm,这得问问 Redis 作者了...

大彬:1、单线程实现可以避免过多的 上下文切换开销 。程序始终运行在进程中单个线程内,没有多线程切换的场景。

大彬:2、 避免同步机制的开销 :如果 Redis 选择多线程模型,需要考虑数据同步的问题,则必然会引入某些同步机制,会导致在操作数据过程中带来更多的开销,增加程序复杂度的同时还会降低性能。

大彬:3、 实现简单,方便维护 :如果 Redis 使用多线程模式,那么所有的底层数据结构的设计都必须考虑线程安全问题,那么 Redis 的实现将会变得更加复杂。

面试官: Redis 应用场景有哪些?大彬 : 缓存热点数据 ,缓解数据库的压力。

大彬:利用 Redis 原子性的自增操作,可以实现 计数器 的功能,比如统计用户点赞数、用户访问数等。

大彬: 作为简单的消息队列 ,实现异步操作。

大彬: 限速器 ,可用于限制某个用户访问某个接口的频率,比如秒杀场景用于防止用户快速点击带来不必要的压力。

大彬: 好友关系 ,利用集合的一些命令,比如交集、并集、差集等,实现共同好友、共同爱好之类的功能。

面试官: 哦,Redis 怎么实现消息队列?

独白:卧槽,给自己挖坑了...

大彬:1、使用列表,让生产者将任务使用 LPUSH 命令放进列表,消费者不断用 RPOP 从列表取出任务。

大彬:2、发布订阅模式。类似于 MQ 的主题模式。只能消费订阅之后发布的消息,一个消息可以被多个订阅者消费。

大彬:3、延时队列。使用 sortedset,拿时间戳作为 score,消息内容作为 key,调用 zadd 来生产消息,消费者用​ ​zrangebyscore​ ​指令获取 N 秒之前的数据轮询进行处理。

面试官: 来讲讲 Redis 主从复制的原理?大彬 :嗯,Redis 的复制功能是支持多个数据库之间的数据同步。主数据库可以进行读写操作,当主数据库的数据发生变化时会自动将数据同步到从数据库。从数据库一般是只读的,它会接收主数据库同步过来的数据。

大彬:下面是主从复制的原理:

  1. 当启动一个从节点时,它会发送一个 ​ ​PSYNC​ ​ 命令给主节点;

  2. 如果是从节点初次连接到主节点,那么会触发一次全量复制。此时主节点会启动一个后台线程,开始生成一份 ​ ​RDB​ ​ 快照文件;

  3. 同时还会将从客户端 client 新收到的所有写命令缓存在内存中。​ ​RDB​ ​ 文件生成完毕后, 主节点会将​ ​RDB​ ​文件发送给从节点,从节点会先将​ ​RDB​ ​文件 写入本地磁盘,然后再从本地磁盘加载到内存中 ;

  4. 接着主节点会将内存中缓存的写命令发送到从节点,从节点同步这些数据;

  5. 如果从节点跟主节点之间网络出现故障,连接断开了,会自动重连,连接之后主节点仅会将部分缺失的数据同步给从节点。

面试官: 不错,了解过期键的删除策略吗?

大彬 :1、 被动删除 。在访问 key 时,如果发现 key 已经过期,那么会将 key 删除。

大彬:2、 主动删除 。定时清理 key,每次清理会依次遍历所有 DB,从 db 随机取出 20 个 key,如果过期就删除,如果其中有 5 个 key 过期,那么就继续对这个 db 进行清理,否则开始清理下一个 db。

大彬:3、 内存不够时清理 。Redis 有最大内存的限制,通过 maxmemory 参数可以设置最大内存,当使用的内存超过了设置的最大内存,就要进行内存释放, 在进行内存释放的时候,会按照配置的淘汰策略清理内存。

上次挂在了京东(Java岗)二面不服气 流量控制具体怎么控制的?拥塞控制具体的算法怎么样的?Java中的锁有用到哪些?说说syn、re和cas的区别?cas具体怎么现实的?进程和线程的区别?具体讲下什么情况下是多进程,什么情况下是多线程?java中的map有哪些?各个简单介绍下hashmap的底层数据结构是怎么样的?有没有map是按key的值排序的?底层怎么现实的?类的加载流程?具体每一步做了什么?Spring Bean 的作用域。两道算法题1、有序二维数组找target,找到返回坐标,找不到返回[-1, -1];2、树的根节点到叶子节点的所有路 阅读详情

相关推荐

百度二面和京东二面+三面面经

刚刚有放出来自己一面的面经,这里继续给大家贴出来自己后续的面经。希望给自己攒一波人品 百度二面: 1.自我介绍。有提到服务的模块化改造。 2.对于MVC,SOA,微服务的理解 3.看到我项目里面用了redis,为什么要用redis ? 是否理解redis的线程模型? 4.然后他紧接着问我,你确定redis比Mysql快? 5.redis的项目中的实际应用场景? 6.我们项目中的那些业务必须要用re...

qq_41086588的博客 1465

京东二面:Redis为什么快?我说Redis是纯内存访问的,然后他对我笑了

纯内存操作Redis利用内存进行数据存储,其操作基于内存读写,由于内存访问速度远超硬盘,使得Redis在处理数据时具有极高的读写速度。特别是对于简单的存取操作,由于线程在内存中执行的时间非常短,主要的时间消耗在于网络I/O,因此Redis在处理大量快速读写请求时表现出卓越的性能。单线程模型Redis采用单线程模型处理客户端请求,这一设计确保了操作的原子性,避免了多线程环境下的上下文切换和锁竞争问题。

王二的博客 1114

二面京东Java岗问的全都总结在这:源码+Redis+中间件+Dubbo

面试官把我问得晕头转向,很显然,京东的二面还是挂了。还是老老实实的恶补原理吧。 回来之后把这些题目做了一个分类并整理出答案(强迫症的我~狂补知识~)分为redis缓存,高并发,分布式,微服务,源码,并发等,接下来分享一下我的这阿里的面经+一些我的学习笔记。 京东关于Spring源码面试真题: 什么事spring框架?spring框架有哪些主要模块? 使用spring框架能带来哪些好处? 什么是控制反转(IOC)?什么事依赖注入? 请解释下spring框架中的IOC?...

bieber007的博客 500

京东二面:Redis 为什么这么快?我说是纯内存操作,他对我笑了笑

每个桶的 entry 保存指向具体key和value的指针。读、写操作都是在内存上完成的,内存直接由 CPU 控制,也就是由 CPU 内部集成内存控制器,所以说内存是直接与 CPU 对接的,享受与 CPU 通信的“最优带宽”。通过计算每个键的哈希值,可以知道对应的哈希桶位置,再通过哈希桶的 entry 找到对应的数据,这也是 Redis“快”的原因之一。随着底层网络硬件性能的提升,Redis 的性能瓶颈逐渐体现在网络 I/O 的读/写上,单个线程处理网络读/写的速度跟不上底层网络硬件执行的速度。

m0_50180963的博客 994

京东 二面 java 后端开发最新校招面试题

文章摘要:本文详细介绍了京东二面中涉及的多个技术问题。主要内容包括:Java线程运行方式(Thread类、Runnable接口、Callable接口、线程池);MySQL类加载过程和常见问题;MySQL索引B+树结构和工作原理;Redis五种数据类型及应用场景;Redis持久化机制(AOF和RDB);四种限流算法比较;RocketMQ的三大作用(解耦、异步、削峰)。这些问题涵盖了Java并发、数据库、缓存、中间件等核心技术点,是面试中常见的重要考察内容。

风一样 1073

上次挂在了京东(Java岗)二面不服气,这次终于拿下offer,皇天不负有心人了也是!

前言 这话要从三个月前说起:当时一名水友告诉我想要跳槽去京东,然后我就本着推波助澜,为粉丝打气的心态(也可能是看热闹不嫌事儿大?)就支持他一定要去,梦想一定要有,没准儿就实现了呢? 没想到。。。。。。。直接凉凉! 以下为第一次京东二面凉经 京东一面凉经 object的方法,7大方法 synchronized方法讲解 synchronized方法实现原理 volatile关键字的原理 锁的分类 偏向锁讲解 NoClassDefFoundError和ClassNotFound.

JavaJIAMIN的博客 748

京东二面:Redis为什么快 我说它是纯内存访问的,然后他对我笑了

最后,我们来总结一下,如何在面试中回答Redis为什么快的原因:纯内存操作: Redis利用内存进行数据存储,其操作基于内存读写,由于内存访问速度远超硬盘,使得Redis在处理数据时具有极高的读写速度。特别是对于简单的存取操作,由于线程在内存中执行的时间非常短,主要的时间消耗在于网络I/O,因此Redis在处理大量快速读写请求时表现出卓越的性能。单线程模型: Redis采用单线程模型处理客户端请求,这一设计确保了操作的原子性,避免了多线程环境下的上下文切换和锁竞争问题。

qq_66627105的博客 992

京东暑期实习面经(已OC)

京东实习一面面经(2021年3月2日下午4点) 体验 我能说…面试官的周围声音太大了吗?hhh面试过程中我也不好提,旁边人非常多,噪音很大,多少受到些干扰。 除了这一点的话,其他体验都非常好。特别让我感动的是我写的算法代码有点小小的bug,面试官和我一起从头开发分析,最终解决问题。而且面试官也全程在和我不用太紧张的,放轻松等等等。 自己也是非常认真的去面对这场面试。从发挥的来说的话,我个人发挥挺一般的,非常简单的算法题被我写复杂了一点,然后还有一个小bug没有发现hhh被自己菜瞎了眼 面试总时长:70分

小李的博客 1547

京东二面:Redis 为什么这么快?我说是纯内存操作,他对我笑了笑......

我是码哥,《Redis 高手心法》作者,可以叫我靓仔。本文将深入探讨 Redis 为什么快的底层原理,主要从高效的内存数据结构、单线程模型、I/O 多路复用,持久化技术的取舍等多角度探讨。Redis 的性能强大主要有以下原因。◎ 基于内存实现。◎ 使用 I/O 多路复用模型。◎ 单线程模型。◎ 6.0 推出 I/O 多线程模型。◎ 高效的底层数据结构。◎ 全局散列表。Re...

码哥字节 997

船舶轨迹预测中的5个常见坑:基于LSTM单步预测的避坑实践

本文针对船舶轨迹预测中LSTM单步预测的常见问题,系统总结了五个典型陷阱及避坑实践。重点分析了如何正确处理AIS数据的非均匀采样与清洗、对航向角进行周期性编码、采用轨迹级归一化策略、缓解单步滚动预测的误差累积,并设计贴合业务的评估指标。这些实践能有效提升预测模型的准确性与实用性。

cnn8visionary的博客 631

【软考高级架构设计师】——2025年上半年软考真题(回忆版)

a)异构计算和算法优化b)资源抽象和容器控制c)安全和隔离(大致是这个意思)

小志的博客 4827

京东二面凉凉,竭尽全力三月,三月之期已到,这次终于拿下offer!

前言 这话要从三个月前说起:当时一名水友告诉我想要跳槽去京东,然后我就本着推波助澜,为粉丝打气的心态(也可能是看热闹不嫌事儿大?)就支持他一定要去,梦想一定要有,没准儿就实现了呢? 没想到。。。。。。。直接凉凉! 以下为第一次京东二面凉经 京东一面凉经 object的方法,7大方法 synchronized方法讲解 synchronized方法实现原理 volatile关键字的原理 锁的分类 偏向锁讲解 NoClassDefFoundError和ClassNotFoundE

yyyy11119的博客 1719

字节开源 DeerFlow 2.0:从 Deep Research 到 Super Agent Harness 的进化之路

GitHub Trending 冠军项目,字节跳动完全开源的超级智能体框架。支持子代理、沙箱执行、长期记忆、技能扩展,可完成从几分钟到几小时的复杂任务。本文深度解析架构设计、安装实战、技能系统,并附上独家配置指南。

qq_38610923的博客 1711

京东技术面二面败在源码、Redis、中间件、Dubbo上,我心态崩了

面试官把我问得晕头转向,很显然,阿里的二面还是挂了。还是老老实实的恶补原理吧。 回来之后把这些题目做了一个分类并整理出答案(强迫症的我~狂补知识~)分为redis缓存,高并发,分布式,微服务,源码,并发等,接下来分享一下我的这阿里的面经+一些我的学习笔记。 京东关于Spring源码面试真题: 什么事spring框架?spring框架有哪些主要模块? 使用spring框架能带来哪些好处? 什么是控制反转(IOC)?什么事依赖注入? 请解释下spring框架...

代码界的扛把子 443

手把手教你用ObjectCRX进行Caxa二次开发:从零开始的环境搭建教程

本文是一份面向零基础初学者的Caxa二次开发实战指南,重点讲解如何使用ObjectCRX框架从零开始搭建开发环境。内容涵盖Visual Studio 2015版本锁定、ObjectCRX向导集成、项目创建、典型错误解决,并最终实现一个可在Caxa中运行的HelloWorld程序,帮助开发者快速入门并避开常见陷阱。

w3x4y的博客 509

京东商品多维特征提取:基于时空大模型的实时库存预测接口设计

在电商行业,库存管理是供应链的核心环节之一。库存水平过高会导致资金占用、仓储成本增加,而库存水平过低则可能引发缺货风险,影响客户满意度和平台声誉。京东作为中国领先的电商平台,拥有海量的商品数据和复杂的业务场景,传统的库存预测方法难以应对市场动态变化和业务需求。时空大模型作为一种融合时间序列分析和空间特征提取的前沿技术,能够捕捉商品多维特征在时空维度上的变化规律,为实时库存预测提供更精准的决策依据。

FB13713612741的博客 954

京东二面凉凉,三个月的闭关之旅,再次投递拿下京东零售意向函

前言 这话要从三个月前说起:当时一名朋友告诉我想要跳槽去京东,然后我就本着推波助澜,为朋友打气的心态(也可能是看热闹不嫌事儿大?)就支持他一定要去,梦想一定要有,没准儿就实现了呢? 没想到。。。。。。。直接凉凉! 以下为第一次京东二面凉经 京东一面凉经 object的方法,7大方法 synchronized方法讲解 synchronized方法实现原理 volatile关键字的原理 锁的分类 偏向锁讲解 NoClassDefFoundError和ClassNotFoundException的区别 追问

资料免费分享,点击名片 686

计算机组成原理(二)—— 数据的表示与运算

本章目录引言一、数制与编码1.1 进位计数制1.1.1 进制及转换1.1.2 真值、机器数1.2 BCD码1.3 ASCII 码1.4 校验码1.4.1 奇偶校验码1.4.2 海明码1.4.3 CRC循环冗余码二、定点数的表示和运算2.1 定点数的表示2.1.1 无符号2.1.2 有符号(原码、反码、补码、移码)2.2 定点数的运算2.2.1 移位运算2.2.2 加减运算(溢出判断)2.2.3 乘法运算2.2.4 除法运算2.3 强制类型转换2.4 数据的存储和排列三、浮点数的表示和运算3.1 浮点数的表示

S mile0804的博客 7473

Redis为什么这么快

使用sortedest,拿时间戳作为score,消息内容作为key,调用zadd来生产消息,消费者用‘zrangebyscore’指令获取N秒之前的数据轮询进行处理。从数据库一般是只读的,它会接收主数据同步过来的数据。避免同步机制的开销。如果Redis选择多线程模型,需要考虑数据同步的问题,则必然会引入某些同步机制,会导致在操作数据过程中带来更多的开销,增加程序复杂度的同时还会降低性能。如果Redis使用多线程模式,那么所有的底层数据结构的设计都必须考虑线程安全问题,那么Redis的实现将会变得更加复杂。

qq_46130027的博客 859

VMware虚拟机调用NVIDIA显卡全攻略:从3D加速到直通与vGPU

显卡虚拟化技术是虚拟化领域的关键组成部分,它通过在虚拟机中模拟或直接分配物理GPU资源,实现了图形渲染与通用计算的加速。其核心原理在于通过Hypervisor层对GPU指令进行拦截、转换或直接映射,从而平衡资源隔离与性能损耗。这项技术的核心价值在于提升资源利用率、实现计算环境隔离,并支持AI训练、3D渲染、科学计算等高性能负载的灵活部署。在应用场景上,轻量级图形界面加速、CUDA学习验证适合使用虚拟3D加速;而追求极致性能的机器学习训练、专业渲染则需依赖PCIe直通技术;对于企业级GPU资源池化与多租户共享

weixin_32308101的博客 1004

点云从入门到精通技术详解100篇-基于三维点云的机器人抓取位姿检测(续)

集到的深度信息会存在噪点,因此需要将生成的场景点云进行预处理,获得平滑、降采样处理场景点云,本文设计的预处理操作更能从冗杂的场景点云中提取清晰、平滑的目标点云,便于后续的抓取位姿采样,提高后续算法的处理效率。因此需要对场景点云进行适当的分割,仅保留目标物体的点云,整个过程可以通过。场较小时,空间中的点云密度会更加提高;觉子系统的效率,再保持全局点云几何形状不改变的前提下,通过对目标点云进行。体素降采样可以快速地减少点云数据并同时保持点云的形。个点,由于我们实施抓取的目标物体只占整个场景点云图的一部分,

getusushu的博客 773

京东技术面二面败在源码、Redis、中间件

spring有几种配置方式? 如何用基于XML配置的方式配置spring? 如何用基于Java配置的方式配置spring? 京东关于redis缓存面试真题: ================ 不止业务缓存,分布式系统中还有哪些缓存? 如何避免缓存穿透、缓存击穿、缓存雪崩? 经典问题:先更新数据库,还是先更新缓存? 失效策略:缓存过期都有哪些策略? 负载均衡:一致性哈希解决了哪些问题? 缓存高可用:缓存如何保证高可用? redis 集群模式的工作原理能说一下么? ..

tt8889的博客 1146

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

双非硬闯阿里之路之钉钉二面&三面+京东数科一面

1. 前言 本人为双非学校本科生,因为对技术特别热爱,加上有老师带队做开发, 可以说有一丢丢技术的技术水平吧,所以三面和面试官聊得还算可以 哈哈哈咱也是大三的学生,我看怎么评论走向把我喊老了呢???? ​ 2. 钉钉二面 二面就是码代码了,考一下基本的算法 判断链表是不是回文链表 数组子数组最大的和 还是蛮简单的,阿里嘛,主要挖源码多一些 3. 钉钉三面 三面如期而至,大概隔了一两天 首先,怼项目。...

AAAhxz的博客 1325

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 什么是主动元数据?为什么 Gartner 预测它是元数据管理的新方向
下一篇: 分布式锁实现原理与最佳实践
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值