当前位置: 首页 > news >正文

【面试宝藏】Redis 常见面试题解析其二

Redis 高级面试题解析

20. 说说 Redis 哈希槽的机制?

Redis 集群采用哈希槽(Hash Slot)机制来分布和管理数据。整个哈希空间被划分为 16384 个槽,每个键通过 CRC16 校验后取模映射到一个哈希槽。每个节点负责一部分哈希槽,从而实现数据分片和负载均衡。

21. Redis 集群的主从复制模型是怎样的?

Redis 集群中的每个主节点(Master)可以有多个从节点(Slave)。主节点负责写操作,从节点负责读操作和数据备份。当主节点失效时,从节点可以通过投票机制提升为主节点,保证高可用性。

22. Redis 集群会有写操作丢失吗?为什么?

Redis 集群在网络分区或多数主节点失效时可能会丢失写操作。因为 Redis 集群采用异步复制,写操作在传播到从节点前,主节点可能会失效,导致数据丢失。

23. Redis 集群之间是如何复制的?

Redis 集群中的主从节点间采用异步复制机制。主节点在处理写操作后,将变更通知从节点,从节点异步地接收和应用这些变更。

24. Redis 集群最大节点个数是多少?

Redis 集群最大支持 1000 个节点。

25. Redis 集群如何选择数据库?

Redis 集群仅支持单个数据库,即数据库索引为 0。因此,所有数据都存储在同一个数据库中,无法像单节点 Redis 那样选择不同的数据库。

26. 怎么测试 Redis 的连通性?

可以使用 ping 命令测试 Redis 服务器的连通性:

redis-cli ping

如果连接正常,服务器会返回 PONG

27. 怎么理解 Redis 事务?

Redis 事务是一组原子操作的集合。事务通过 MULTIEXECDISCARDWATCH 等命令实现。事务内的所有命令按顺序执行,不会被其他命令插入。

28. Redis 事务相关的命令有哪些?
  • MULTI:开始一个事务。
  • EXEC:执行事务中的所有命令。
  • DISCARD:放弃事务中的所有命令。
  • WATCH:监视一个或多个键,若在事务执行前这些键被修改,事务将被取消。
29. Redis Key 的过期时间和永久有效分别怎么设置?
  • 设置过期时间:使用 EXPIRE 命令,如设置 10 秒后过期:
    EXPIRE key 10
    
  • 设置永久有效:使用 PERSIST 命令取消键的过期时间:
    PERSIST key
    
30. Redis 如何做内存优化?
  • 合理使用数据类型:选择适合的数据结构存储数据。
  • 压缩数据:使用合适的编码方式减少内存占用。
  • 淘汰策略:配置合适的内存淘汰策略,如 LRU(最近最少使用)。
  • 过期策略:合理设置键的过期时间,及时清理无用数据。
31. Redis 回收进程如何工作的?

Redis 回收进程通过定期和惰性删除机制清理过期键。当内存使用达到阈值时,Redis 根据配置的淘汰策略删除部分键,以腾出空间。

32. 有哪些办法可以降低 Redis 的内存使用情况呢?
  • 使用合适的数据结构:例如使用哈希表存储小对象。
  • 压缩和编码:利用 Redis 内置的对象编码(如 ZIPLIST、INTSET)优化存储。
  • 设置过期时间:及时清理过期数据。
  • 数据拆分:将大对象拆分成小对象存储。
33. Redis 的内存用完了会发生什么?

当 Redis 内存用完时,会根据配置的淘汰策略删除部分键。如果没有配置淘汰策略,写操作将返回错误(OOM),无法插入新数据。

34. 一个 Redis 实例最多能存放多少的 KEYS?

Redis 理论上能存储的数据量取决于可用内存和操作系统的限制。实际中,内存是主要限制因素。64 位系统下,Redis 可以支持数十亿个键。

35. MySQL 里有 2000w 数据。Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。

可以通过以下方法保证 Redis 中存储热点数据:

  • 设置合理的过期时间:确保长时间不访问的数据自动过期。
  • 使用 LRU 淘汰策略:淘汰最近最少使用的数据,保持热点数据在内存中。
36. Redis 最适合的场景?
  • 缓存:提高数据访问速度,减轻数据库负载。
  • 会话存储:存储用户会话数据。
  • 排行榜/计数器:实现快速排序和计数功能。
  • 消息队列:实现发布/订阅和延迟队列等功能。
  • 实时分析:处理实时数据分析和统计。
37. 假如 Redis 里面有 1亿个 Key,其中有 10w 个 Key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?

可以使用 SCAN 命令配合模式匹配找出指定前缀的键:

SCAN 0 MATCH prefix* COUNT 1000

注意,SCAN 命令是增量式遍历,不会阻塞 Redis。

38. 如果有大量的 Key 需要设置同一时间过期。一般需要注意什么?
  • 避免过期时间扎堆:大批量键同时过期会造成 Redis 瞬时压力增大。
  • 分批设置过期时间:将过期时间分散开,减少压力。
39. 使用过 Redis 做异步队列么,你是怎么用的?

可以使用 Redis 的列表(List)结构实现异步队列:

  • 生产者使用 LPUSH 将任务加入队列。
  • 消费者使用 BRPOP 从队列中取出任务。
40. 使用过 Redis 分布式锁么,它是什么回事?

Redis 分布式锁用于在分布式环境下控制资源访问。实现方法:

  • 使用 SET key value NX PX 设置锁,NX 确保键不存在时设置,PX 设置过期时间。
  • 释放锁时,确保释放的是自己加的锁,可以使用 Lua 脚本保证原子性。

相关文章:

【面试宝藏】Redis 常见面试题解析其二

Redis 高级面试题解析 20. 说说 Redis 哈希槽的机制? Redis 集群采用哈希槽(Hash Slot)机制来分布和管理数据。整个哈希空间被划分为 16384 个槽,每个键通过 CRC16 校验后取模映射到一个哈希槽。每个节点负责一部分哈希槽&#…...

智慧公厕厂家+智能厕所小程序,构建数字化公厕新体系

在现代社会的诸多场景中,公厕扮演着重要却常常被忽视的角色。尤其是在传统的楼宇中,公厕存在着一系列痛点问题。 一、传统公厕问题 传统楼宇公厕常常面临着布局不合理的困境,导致使用者寻找困难,浪费时间和精力。卫生状况也是一大…...

使用迁移助手 (SSMA for Oracle) 将Oracle19c数据库迁移到SQL Server2022

如何使用适用于 Oracle 的 SQL Server 迁移助手Microsoft SQL Server Migration Assistant for Oracle (SSMA for Oracle) 将 Oracle 数据库迁移到 SQL Server Microsoft SQL Server Migration Assistant (SSMA) for Oracle is a tool to automate migration from Oracle data…...

LabVIEW开发EOL功能测试系统

LabVIEW开发EOL功能测试系统 介绍了一种基于LabVIEW开发的EOL功能测试系统方案,涵盖软件架构、工作流程、模块化设计、低耦合性、易于修改与维护、稳定性及硬件选型。系统通过高效的CAN通信实现对电机控制器的全面测试,确保运行可靠并支持未来的升级需求…...

Java finally catch try关键字

Java finally catch try关键字 finally: finally 关键字用来创建在 try 代码块后面执行的代码块;无论是否发生异常,finally 代码块中的代码总会被执行。 在 finally 代码块中,可以进行文件流关闭等收尾善后性质的语句 catch&am…...

docker安装mysql8和mysql5.7

1.docker安装mysql5.7,请点击此链接 2.docker安装mysql8并挂载数据卷 docker pull mysql:8.0 docker run --name mysql8 -e MYSQL_ROOT_PASSWORDmy-secret-pw -d mysql:8.0 docker run --name mysql8 -e MYSQL_ROOT_PASSWORD123456 -v /mqq/mysql8/datadir:/var/lib/mysql -d…...

通过一个例子,说明Python的责任链设计模式有什么优缺点

责任链设计模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许将一个请求沿着处理者链进行传递,直到有一个处理者处理它为止。在Python中,这种模式可以通过多种方式实现,通常涉及到一系列对象…...

场地预定小程序基于FastAdmin+UniApp

本文来自:XYvenue场地预定小程序基于FastAdminUniApp - 源码1688 应用介绍 XYvenue是基于FastAdminUniApp开发的多场馆场地预定小程序,提供运动场馆运营解决方案,适用于体育馆、羽毛球馆、兵乒球馆、篮球馆、网球馆等场馆。 前端演示&#xf…...

CrossPrefetch: Accelerating I/O Prefetching for Modern Storage——论文泛读

ASPLOS 2024 Paper 论文阅读笔记整理 问题 目前计算设备和存储设备之间的性能差距仍然很大。因此,主内存缓存和缓冲区被广泛用于操作系统、用户级文件系统[32]和I/O运行时,在隐藏性能差距和减少I/O瓶颈方面发挥关键作用[23,26,3…...

详解 Spark Streaming 的 DStream 对象

一、DStream 的创建 1. 通过 RDD 队列 DStream 在内部实现上是一系列连续的 RDD 来表示。每个 RDD 包含有采集周期内的数据 /** 基本语法:StreamingContext.queueStream(queueOfRDDs: Queue, oneAtATime false) */ object DStreamFromRddQueue {def main(args: Ar…...

QT常用控件

目录 1.控件概述 2. QWidget 核⼼属性 设置组件是否可用 获取组件当前位置和尺⼨ QWidget的图标 组件的透明度设置 QWidget光标的设置 字体的设置 组件提示 设置组件获取到焦点的策略 stylesheet样式表 3.常用组件 QPushButton RadioButton Check Box QLabel …...

如何解决chatgpt出现503 bad gateway的问题

昨日,ChatGPT官网挂了,也就是使用web网页端访问的用户,会出现 bad gateway 情况。我们去ChatGPT官方的监控查看,已经展示相关错误。 影响的范围有: 影响了 ChatGPT 所有计划的所有用户。影响包括所有与 ChatGPT 相关…...

Halcon 双相机标定与拼图(二)

一、概述 这种标定有两种模式,有一个标定板和多个标定板两种 一个标定板 两个相机的重叠区域比较大,那么我们可以把标定板放到那个重叠区域来统一坐标系,如下 这种是只需要一个标定板,这种是推荐的方式 。这种是比较简单的&…...

【加密与解密】【04】Java安全架构

JAVA安全模块划分 JCA,Java Cryptography Architecture,Java加密体系结构JCE,Java Cryptography Extension,Java加密扩展包JSSE,Java Secure Sockets Extension,Java安全套接字扩展包JAAS,Java…...

论文阅读:Neural Scene Flow Prior

目录 概要 Motivation 整体架构流程 技术细节 小结 论文地址:...

如何通过 6 种简单方法将照片从华为转移到 PC?

华为作为全球领先的智能手机供应商之一,最近推出了其自主研发的操作系统——HarmonyOS 2.0,旨在为智能手机、平板电脑和智能手表等设备提供更流畅的用户体验。随着Mate 40/P40等系列手机计划升级到HarmonyOS 2.0,用户可能需要将手机中的文件备…...

QtCharts使用

1.基础配置 1.QGraphicsView提升为QChartView#include <QtCharts> QT_CHARTS_USE_NAMESPACE #include "ui_widget.h"2. QT charts 2.柱状图 2.1QBarSeries //1.创建Qchart对象QChart *chart new QChart();chart->setTitle("直方图演示");//设…...

深入分析 Flink SQL 工作机制

摘要&#xff1a;本文整理自 Flink Forward 2020 全球在线会议中文精华版&#xff0c;由 Apache Flink PMC 伍翀&#xff08;云邪&#xff09;分享&#xff0c;社区志愿者陈婧敏&#xff08;清樾&#xff09;整理。旨在帮助大家更好地理解 Flink SQL 引擎的工作原理。文章主要分…...

Spring Bean参数校验Validator

Spring Bean参数校验Validator 以下2种方式可以用于所有的 Spring bean 不仅仅是 Controller 控制器。 一、原始类型参数 在控制器&#xff08;或者其他Bean&#xff09;上使用Validated注解。 控制器类 RestController RequestMapping("account") Validated pub…...

AOP案例

黑马程序员JavaWeb开发教程 文章目录 一、案例1.1 案例1.2 步骤1.2.1 准备1.2.2 编码 一、案例 1.1 案例 将之前案例中增、删、改相关节后的操作日志记录到数据库表中。 操作日志&#xff1a;日志信息包含&#xff1a;操作人、操作时间、执行方法的全类名、执行方法名、方法…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...