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

Redis高频面试题10个

1. Redis 的特点及与 Memcached 的区别 

  • 特点

    • 基于内存的键值数据库,支持持久化(RDB/AOF)。

    • 单线程模型,通过 IO 多路复用实现高并发。

    • 支持多种数据结构:字符串、哈希、列表、集合、有序集合等。

    • 提供事务、发布订阅、Lua 脚本等功能。

  • 与 Memcached 区别

    • 数据持久化:Redis 支持数据落盘,Memcached 纯内存。

    • 数据类型:Memcached 仅支持字符串,Redis 支持复杂数据结构。

    • 内存管理:Redis 采用虚拟内存机制,Memcached 使用预分配内存池。


2. Redis 的持久化机制(RDB vs AOF) 

  • RDB(快照)

    • 定时生成内存快照(dump.rdb),恢复速度快。

    • 缺点:可能丢失最后一次快照后的数据。

    • 触发方式:SAVE(阻塞)/ BGSAVE(后台异步)。

  • AOF(追加日志)

    • 记录所有写操作命令(appendonly.aof),数据安全性高。

    • 支持三种同步策略:always(每次写同步)、everysec(每秒同步,默认)、no(由系统决定)。

    • 缺点:文件体积大,恢复速度慢。

  • 混合持久化(Redis 4.0+):

    • 结合 RDB 和 AOF,重启时先加载 RDB 快照,再重放 AOF 增量命令。


3. Redis 的内存淘汰策略 

Redis 提供 6 种策略,通过 maxmemory-policy 配置:

  1. volatile-lru:从已设置过期的数据中淘汰最近最少使用的。

  2. volatile-ttl:淘汰即将过期的数据。

  3. volatile-random:随机淘汰已过期的数据。

  4. allkeys-lru:全局淘汰最近最少使用的数据(推荐)。

  5. allkeys-random:全局随机淘汰。

  6. noeviction:禁止淘汰,新写入操作报错。


4. Redis 事务与 CAS 乐观锁 

  • 事务流程

    • MULTI 开启事务 → 命令入队 → EXEC 执行或 DISCARD 取消。

    • 事务中的命令按顺序执行,但不保证原子性(单条命令失败不影响后续执行)。

  • CAS 实现

    • 使用 WATCH 监控键,若事务执行前键被修改,则事务回滚。

    • 示例:

      WATCH key
      val = GET key
      val = val + 1
      MULTI
      SET key val
      EXEC


5. Redis 单线程模型为何高效 

  • 核心原因

    • 纯内存操作,无磁盘 I/O 瓶颈。

    • 基于 Reactor 模式的非阻塞 IO 多路复用(epoll/kqueue)。

    • 单线程避免多线程上下文切换和竞争问题。

    • C 语言实现,底层优化充分。


6. 缓存穿透、击穿、雪崩的解决方案 

  • 穿透(查询不存在的数据):

    • 布隆过滤器拦截非法请求。

    • 缓存空值并设置短过期时间。

  • 击穿(热点 key 失效后高并发访问数据库):

    • 使用互斥锁(如 Redis 的 SETNX),保证单线程重建缓存。

  • 雪崩(大量 key 同时过期):

    • 分散过期时间(如基础时间 + 随机偏移)。

    • 永不过期策略 + 异步更新。


7. Redis 分布式锁的实现 

  • 核心命令

    SET lock_key unique_value NX EX 30  # 原子性加锁并设置超时
  • 注意事项

    • 锁需设置超时时间,防止死锁。

    • 释放锁时需验证值(避免误删其他线程的锁)。

    • 可结合 Redlock 算法实现多节点锁。


8. Redis 集群方案 

  1. 主从复制

    • 主节点(Master)写,从节点(Slave)读,支持数据同步。

    • 缺点:主节点单点故障。

  2. 哨兵模式(Sentinel)

    • 监控主从节点,自动故障转移。

  3. Cluster 模式

    • 数据分片(16384 个哈希槽),支持水平扩展。

    • 节点间通过 Gossip 协议通信,自动故障恢复。


9. Redis 的 Pipeline 与 Pub/Sub 

  • Pipeline

    • 将多个命令打包发送,减少网络往返时间(RTT),提升吞吐量。

    • 适用场景:批量操作(如批量写入数据)。

  • Pub/Sub

    • 发布订阅模式,支持消息广播。

    • 缺点:消息不持久化,消费者离线时消息丢失。


10. Redis 性能优化建议 

  • 内存优化

    • 使用 ziplistintset 等紧凑数据结构。

    • 避免存储大 Key(如单个 Value 超过 1MB)。

  • 持久化配置

    • 主节点关闭 RDB/AOF,从节点开启 AOF。

  • 集群部署

    • 分片避免数据倾斜,分散热点 Key。

相关文章:

Redis高频面试题10个

1. Redis 的特点及与 Memcached 的区别 特点: 基于内存的键值数据库,支持持久化(RDB/AOF)。 单线程模型,通过 IO 多路复用实现高并发。 支持多种数据结构:字符串、哈希、列表、集合、有序集合等。 提供…...

【数据库】MySQL常见聚合查询详解

在数据库操作中,聚合查询是非常重要的一部分。通过聚合查询,我们可以对数据进行汇总、统计和分析。MySQL提供了丰富的聚合函数来满足不同的需求。本文将详细介绍MySQL中常见的40个聚合函数及其使用场景,并通过8个的案例展示它们的用法。 一、…...

蓝桥备赛(11)- 数据结构、算法与STL

一、数据结构 1.1 什么是数据结构? 在计算机科学中,数据结构是一种 数据组织、管理和存储的格式。它是相互之间存在一种 或多种特定关系的数据元素的集合。 ---> 通俗点,数据结构就是数据的组织形式 , 研究数据是用什么方…...

Linux的系统ip管理

ip地址 命令:ifconfig 127.0.0.1这个ip地址用于指本机。 0.0.0.0特殊ip地址用于指代本机,可以在端口绑定中用来确定绑定关系,在一些ip地址限制中,表示所有ip的意思。如放行规则设置为0.0.0.0,表示允许任意ip访问。 …...

【决策树】分类属性的选择

文章目录 1.信息增益(ID3)2.信息增益率(C4.5)3.基尼指数(CART)ps.三者对比 实现决策树算法最关键的一点就是如何从所有的特征属性中选择一个最优的属性对样本进行分类,这种最优可以理解为希望划…...

uniapp vue3 微信小程序 uni.chooseLocation使用

申请 先要去微信公众平台申请使用接口 开通成功之后就可以在项目中配置使用了 配置 配置manifest.json "mp-weixin": {/* 小程序特有相关 */"requiredPrivateInfos": ["chooseLocation"],"permission": {"scope.userLocati…...

9. Flink的性能优化

1. Flink的资源和代码优化 1.1 slot资源配置 Flink中具体跑任务的进程叫TaskManager,TM进程又会根据配置划分出诺干个TaskSlot,它是具体运行SubTask的地方。slot是Flink用来隔离各个subtask的资源集合,这里的资源一把指内存,TCP…...

十二、OSG学习笔记-Control

上一章节: 十一、OSG学习笔记-操作系统接口-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145891502 本章节代码: OsgStudy/Controls CuiQingCheng/OsgStudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/osg-study/tree/ma…...

集群、分布式与微服务架构 区别

集群、分布式与微服务架构:概念解析与核心差异 在构建现代软件系统时,集群架构、分布式系统和微服务架构是三种常见的技术方案。它们常被混淆,但各自解决的问题、设计理念和应用场景截然不同。本文将从基础概念出发,深入分析三者…...

如何使用SSH命令安全连接并转发端口到远程服务器

ssh -p 22546 rootconnect.westc.gpuhub.com d6IS/mQKq/iG ssh -CNgv -L 6006:127.0.0.1:6006 rootconnect.westc.gpuhub.com -p 22546 第一条命令:用于登录远程服务器,进行交互式操作。第二条命令:用于建立 SSH 隧道,进行端口转…...

【Java 基础】-- 设计模式

目录 Java 设计模式详解 1. 设计模式定义 2. 设计模式示例 2.1 单例模式(Singleton Pattern) 2.2 工厂模式(Factory Pattern) 2.3 观察者模式(Observer Pattern) 2.4 代理模式(Proxy Pat…...

ComfyUI进阶学习全指南(2025年最新版)

ComfyUI进阶学习全指南(2025年最新版) 一、自定义节点与扩展管理 1.1 自定义节点安装与维护 ComfyUI的核心竞争力在于其可扩展性。通过安装第三方节点模块,用户可实现超分辨率修复、骨骼绑定动画生成等高级功能。安装方式主要分为三种&…...

Linux和gcc/g++常用命令总结

目录 Linux命令总结 文件操作相关命令 ls cd pwd cp mv rm cat mkdir rmdir touch 文本处理操作命令 grep awk sed 进程管理操作相关命令 ps top htop kill pkill killall chmod chown 网络操作相关命令 ping ifconfig netstat ss lsof curl …...

uniapp封装路由管理(兼容Vue2和Vue3)

1:uniapp已经有路由管理了为什么还要二次封装路由? 简化配置和调用增强灵活性和可扩展性实现统一的功能和策略提升开发效率和团队协作 2. 增强灵活性和可扩展性 灵活配置:二次封装允许开发者根据实际需求灵活配置路由参数,如跳…...

π0源码解析——一个模型控制7种机械臂:对开源VLA sota之π0源码的全面分析,含我司的部分落地实践

前言 ChatGPT出来后的两年多,也是我疯狂写博的两年多(年初deepseek更引爆了下),比如从创业起步时的15年到后来22年之间 每年2-6篇的,干到了23年30篇、24年65篇、25年前两月18篇,成了我在大模型和具身的原始技术积累 如今一转眼…...

【C++】Class(1)

《C程序设计基础教程》——刘厚泉,李政伟,二零一三年九月版,学习笔记 文章目录 1、类的定义1.1、结构体和类1.2、基本概念1.3、成员函数的定义1.4、内联成员函数 2、对象2.1、对象的定义2.2、成员访问 3、构造函数3.1、构造函数的定义3.2、子…...

doris: Oracle

Apache Doris JDBC Catalog 支持通过标准 JDBC 接口连接 Oracle 数据库。本文档介绍如何配置 Oracle 数据库连接。 使用须知​ 要连接到 Oracle 数据库,您需要 Oracle 19c, 18c, 12c, 11g 或 10g。 Oracle 数据库的 JDBC 驱动程序,您可以从 Maven 仓库…...

Android14 OTA差分包升级报Package is for source build

制作好差分包&#xff0c;使用adb线刷模式验证ota升级&#xff0c;出现E:Package is for source build错误 使用adb方式验证 进入recovery模式 adb reboot recovery稍等一会界面会提示 Now send the package you want to apply to the device with "adb sidelaod <…...

双向选择排序算法

一 概述 双向选择排序(又称鸡尾酒选择排序)是选择排序的优化版本,核心改进在于每轮遍历同时确定未排序部分的最小值和最大值,分别交换到序列两端,从而减少遍历轮数。 二 时间复杂度 时间复杂度为(O(n^2)),但实际比较次数约为标准选择排序的 (1/2)。 三 C++实现代…...

Node.js setImmediate 教程

Node.js setImmediate 教程 简介 setImmediate() 是 Node.js 环境中的一个函数&#xff0c;用于安排一个回调函数在当前事件循环周期结束后立即执行。它提供了一种在当前操作完成后&#xff0c;但在任何 I/O 事件或定时器触发之前执行代码的方法。 基本用法 setImmediate((…...

基于GADF-CNN-GOSO-LSSVM的齿轮箱故障诊断方法探索

基于GADF-CNN-GOSO-LSSVM的齿轮箱故障诊断 首先&#xff0c;利用格拉姆角场差(GADF)时频分辨率高、可以深度反映时间序列内在结构和关系的特点&#xff0c;对采集到的一维故障数据信号转为二维图像&#xff0c;得到图像后并将图像进行降维处理&#xff1b;然后&#xff0c;将第…...

MongoDB:如何构建“数据回收站“,防止人为误删数据(延迟节点)

更多内容请见: 《深入掌握MongoDB数据库》 - 专栏介绍和目录 一、引言:数据误删的现实挑战 在企业级数据库系统中,人为误删数据是导致业务中断的常见原因。根据2023年数据库安全报告,37%的数据丢失事件是由人为错误引起的,其中误删除操作占主要部分。MongoDB作为企业级No…...

从零到一:AI工程开源资源全栈指南与实战应用

从零到一&#xff1a;AI工程开源资源全栈指南与实战应用 【免费下载链接】aie-book [WIP] Resources for AI engineers. Also contains supporting materials for the book AI Engineering (Chip Huyen, 2025) 项目地址: https://gitcode.com/GitHub_Trending/ai/aie-book …...

ABAP - SMW0实现Excel模板下载与数据上传解析全流程指南(附完整代码)

1. 为什么需要Excel模板下载与上传功能 在企业级应用开发中&#xff0c;Excel模板的下载与上传功能几乎是标配。想象一下这样的场景&#xff1a;财务部门需要每月收集各部门的预算数据&#xff0c;如果让每个部门直接在SAP系统里录入&#xff0c;操作复杂且容易出错。而提供一个…...

从零开始用Typora写技术文档:完整配置指南与高效排版秘籍

从零开始用Typora打造专业技术文档&#xff1a;配置、排版与效率全攻略 在技术写作领域&#xff0c;文档的呈现质量往往直接影响知识传递的效果。Typora作为一款轻量级Markdown编辑器&#xff0c;凭借其即时渲染、简洁界面和强大的扩展功能&#xff0c;已成为众多开发者和技术作…...

新手福音:基于快马平台零基础入门Ubuntu与OpenClaw机器人开发

作为一个刚接触机器人开发的新手&#xff0c;最近在Ubuntu上折腾OpenClaw机器人开发时踩了不少坑。从环境配置到代码调试&#xff0c;每一步都让人头大。不过后来发现了InsCode(快马)平台&#xff0c;简直像找到了救星。今天就把我的学习过程整理成笔记&#xff0c;分享给同样想…...

Qwen3-4B-Thinking-GGUF开源模型:Apache-2.0协议下合规商用注意事项

Qwen3-4B-Thinking-GGUF开源模型&#xff1a;Apache-2.0协议下合规商用注意事项 1. 引言&#xff1a;当开源模型遇上商业应用 最近&#xff0c;一个名为Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF的模型在开发者圈子里引起了不小的关注。这个模型基于Qwen3-4B-Thinkin…...

SEKA与AdaSEKA:破解大模型注意力引导难题的新方案

【导语&#xff1a;在自然语言处理领域&#xff0c;让大模型重点关注提示词某句话存在挑战。爱丁堡大学等团队提出SEKA及其自适应变体AdaSEKA&#xff0c;解决了现有方法的延迟和显存瓶颈问题&#xff0c;为大语言模型发展带来新思路。】SEKA&#xff1a;改写Key向量引导注意力…...

探索介质超表面中的三次谐波与非线性光学

Comsol介质超表面三次谐波非线性模型&#xff0c;包含功率依赖 且倍频模型以及转换效率计算最近在研究介质超表面的非线性光学特性时&#xff0c;遇到了一个挺有意思的问题&#xff1a;如何在Comsol中模拟三次谐波生成&#xff08;THG&#xff09;以及倍频效应&#xff1f;尤其…...

断更 9 天放大招!OpenClaw 3.22 版全维度升级,龙虾这次真的变超强

各位技术圈的小伙伴&#xff0c;学长来给大家同步个重磅消息&#xff01;火遍全网的 OpenClaw 断更 9 天之后&#xff0c;直接甩出王炸 ——2026.3.22-beta.1 预览版正式上线&#xff0c;这次可不是小修小补&#xff0c;而是从插件架构到安全防护、从模型配置到交互体验的底层大…...