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

Redis 常见面试题解析

1. 什么是 Redis?

Redis 是一个开源的内存数据结构存储系统,可以用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串、哈希、列表、集合和有序集合。

2. Redis 的数据类型?

Redis 支持以下数据类型:

  • 字符串(String):二进制安全的字符串,可以包含任何数据。
  • 哈希(Hash):键值对集合,特别适合存储对象。
  • 列表(List):按插入顺序排序的字符串列表,可以用作消息队列。
  • 集合(Set):无序且唯一的字符串集合,支持集合运算。
  • 有序集合(Sorted Set):带有分数的有序字符串集合,用于排序。
3. 使用 Redis 有哪些好处?
  • 高性能:Redis 完全在内存中操作,速度极快。
  • 丰富的数据类型:支持多种复杂的数据结构。
  • 原子操作:所有操作都是原子的,保证数据一致性。
  • 持久化:支持数据持久化到磁盘,防止数据丢失。
  • 复制与高可用性:支持主从复制和高可用性(Redis Sentinel)。
  • 分布式支持:Redis 集群提供分布式存储能力。
4. Redis 相比 Memcached 有哪些优势?
  • 数据持久化:Redis 支持数据持久化,而 Memcached 只在内存中存储数据。
  • 丰富的数据结构:Redis 支持多种数据类型,而 Memcached 仅支持字符串。
  • 发布/订阅机制:Redis 支持消息的发布/订阅机制。
  • 事务支持:Redis 支持简单的事务操作。
  • 更细粒度的内存管理:Redis 内存管理更灵活,支持更复杂的数据操作。
5. Memcache 与 Redis 的区别有哪些?
  • 数据存储:Memcache 只存储数据在内存中,重启后数据丢失;Redis 支持持久化存储。
  • 数据类型:Memcache 仅支持简单的键值对存储;Redis 支持多种数据结构。
  • 持久化:Memcache 不支持持久化;Redis 支持 RDB 和 AOF 持久化机制。
  • 集群模式:Redis 支持集群模式,分布式存储和管理数据;Memcache 通过客户端分布式处理。
6. Redis 是单进程单线程的吗?

是的,Redis 使用单进程单线程的模型处理请求,但通过 I/O 多路复用技术实现了高并发处理能力。

7. 一个字符串类型的值能存储最大容量是多少?

Redis 字符串类型的值可以存储最大 512MB 的数据。

8. Redis 的持久化机制是什么?各自的优缺点?

Redis 主要有两种持久化机制:

  • RDB(Redis Database):以快照的方式将数据保存到二进制文件。优点是适合大规模数据恢复;缺点是可能会丢失最后一次快照后的数据。
  • AOF(Append-Only File):记录每个写操作到日志文件。优点是数据丢失较少,恢复数据较为完整;缺点是日志文件较大,恢复速度较慢。
9. Redis 常见性能问题和解决方案:
  • 内存不足:通过使用内存优化策略,如压缩数据、设置内存限制等。
  • 慢查询:使用监控工具分析慢查询,优化数据结构和查询命令。
  • 网络延迟:使用客户端连接池和本地化部署,减少网络延迟。
  • 持久化延迟:调整持久化配置,合理设置持久化频率。
10. Redis 过期键的删除策略?
  • 定期删除:Redis 每隔一定时间随机抽取一部分设置了过期时间的键,检查并删除。
  • 惰性删除:当访问键时,检查其是否过期,若过期则删除。
  • 主动删除:内存不足时,优先删除已过期的键。
11. Redis 的回收策略(淘汰策略)?
  • volatile-lru:从已设置过期时间的数据集中选择最近最少使用的淘汰。
  • allkeys-lru:从数据集中选择最近最少使用的淘汰。
  • volatile-random:从已设置过期时间的数据集中随机选择淘汰。
  • allkeys-random:从数据集中随机选择淘汰。
  • volatile-ttl:从已设置过期时间的数据集中选择将要过期的淘汰。
  • noeviction:不淘汰,返回错误。
12. 为什么 Redis 需要把所有数据放到内存中?

Redis 通过将数据存储在内存中,实现高效的读写操作,提供极快的访问速度。虽然数据也可以持久化到磁盘,但操作主要在内存中完成,确保性能。

13. Redis 的同步机制了解么?

Redis 支持主从复制,通过主节点将数据同步到从节点,从节点可以分担读取压力并提供高可用性。同步分为全量同步和部分同步。

14. Pipeline 有什么好处,为什么要用 Pipeline?

Pipeline 允许客户端一次发送多个命令,而不需要等待每个命令的响应,减少网络延迟,提高吞吐量。适用于批量操作的场景。

15. 是否使用过 Redis 集群,集群的原理是什么?

Redis 集群通过将数据分片存储在多个节点上,实现分布式存储和高可用性。集群采用哈希槽(hash slots)机制,每个键根据哈希值映射到不同的槽,每个节点负责特定范围的槽。

16. Redis 集群方案什么情况下会导致整个集群不可用?

当集群中超过半数的主节点失效,或者节点间网络通信中断,集群会进入不可用状态。

17. Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?

Redis 支持的 Java 客户端包括:

  • Jedis
  • Lettuce
    官方推荐使用 Lettuce,它是基于 Netty 实现的,支持同步和异步操作,性能优异。
18. Jedis 与 Redisson 对比有什么优缺点?
  • Jedis:轻量级、性能高,但多线程环境下需要注意连接管理。
  • Redisson:功能更强大,支持分布式对象和锁,但相对复杂和资源消耗稍大。
19. Redis 如何设置密码及验证密码?

设置密码:

config set requirepass <password>

验证密码:

auth <password>

版权声明

本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。

原文链接:CSDN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/22268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用tftpd更新开发板内核

我们升级内核可以通过原厂提供的升级软件来进行&#xff0c;比如瑞芯微的RKDevTool.exe&#xff0c;只不过这种方式必须通过指定的OTG升级口&#xff0c;还得借助按键进入loader模式后才可以。 其实还可以利用一些通用的工具来进行升级&#xff0c;比如tftpd工具。 下载地址p…

C++:栈(stack)、队列(queue)、优先级队列(priority_queue)

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;栈&#xff08;stack&#xff09;和队列&#xff08;queue&#xff09;》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 文章目录 :map…

rust linux 交叉编译

比如在 x86 linux 上编译 riscv64 的程序&#xff0c;可以建一个最简单的 hello world 测试 x86 linux 需要安装gcc-riscv64-linux-gnu&#xff0c;rust要rustup target add riscv64gc-unknown-linux-gnu 在 rust 工程里创建.cargo/config.toml&#xff0c;内容为&#xff1a;…

MPLAB--读写MCU数据

空工程 Read –Programmer\Read –File\Export, –确定后选择文件位置 & 文件名 Program –File\Import…,选择烧录的文件*.hex –Programmer\Program

(有代码示例)Vue 或 JavaScript中使用全局通信的3种方式

在 Vue 或 JavaScript 应用中&#xff0c;可以使用以下库来实现全局事件通信&#xff1a; Vue.js 中的 EventBus&#xff1a; 在 Vue.js 中&#xff0c;可以使用 EventBus 来实现全局事件通信。EventBus 是一个 Vue 实例&#xff0c;用于在组件之间传递事件。你可以使用 $on、…

如何 Logrus IT 的质量评估门户帮助提升在线商店前端(案例研究)

在当今竞争激烈的电子商务环境中&#xff0c;一个运作良好的在线店面对商业成功至关重要。然而&#xff0c;确保目标受众获得积极的用户体验可能是一项挑战&#xff0c;尤其是在使用多种语言和平台时。Logrus IT的质量评估门户是一个强大的工具&#xff0c;可帮助企业简化内容和…

《python开发》cannot allocate memory in static TLS block-报错问题解决

阿丹&#xff1a; 今天在配置跑rasa训练的时候出现问题&#xff0c;找了国内论坛有解决的人&#xff0c;但是说的不明白。查阅了很多论坛之后发现了解决的方案。 https://github.com/keras-team/keras-tuner/issues/317 问题描述以及错误&#xff1a; 关键错误 &#xff1a;c…

做视频号小店什么类目最容易爆单?其实,弄懂这三点就会选品了

大家好&#xff0c;我是电商花花。 我们做视频号小店做什么类目最容易爆单&#xff1f; 其实任何类目都有属于自己的受众人群和客户&#xff0c;都非常容易爆单&#xff0c;我们想要爆单&#xff0c;就要选对类目&#xff0c;选对产品。 视频号上所有的类目基本上可以分为标…

C++ static_cast、dynamic_cast、const_cast 和 reinterpret_cast 用处和区别

在 C 中&#xff0c;static_cast、dynamic_cast、const_cast 和 reinterpret_cast 是四种类型转换运算符&#xff0c;它们各自有不同的用途和行为&#xff1a; static_cast 用于编译时已知类型的转换&#xff0c;如基本数据类型转换、派生类到基类的转换、指针和引用的转换等…

对比 delay() 和 sleep()

Kotlin 语言中的协程 Coroutine 极大地帮助了开发者更加容易地处理异步编程。就 JVM 的角度而言&#xff0c;协程一定程度上减少了 “回调地狱” 的问题&#xff0c;切实地改进了异步处理的编码方式。Coroutine 中封装的诸多高效 API&#xff0c;可以确保开发者花费更小的精力…

docker与docker-compose部署

1.1 安装工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm21.2 添加docker的yum库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum makecache fast1.3 安装Docker sudo yum install docke…

C2prog烧写程序

DSP开发&#xff0c;使用CCS软件建立工程 C2prog 支持C2prog通过串口进行下载&#xff0c;支持out文件。这个下载器下载速度比官方提供的UNIFLASH还要快。 boot跳线设置&#xff0c;不同的DSP拨码方式不相同。制作单板硬件时&#xff0c;通常时将前面三个直接拉到高&#xff…

视频号小店,目前电商界最值得去做的创业项目,一篇解读!

大家好&#xff0c;我是电商小V 要说24年最火的创业性项目那一定是视频号小店&#xff0c;为什么会这样说呢&#xff1f;这主要的还是和他背后的平台有关系&#xff0c;视频号小店是背靠腾讯电商平台的&#xff0c;坐拥的流量可以说是很多的&#xff0c;可以说视频号小店的靠山…

Windows 搭建C++ 纯开源开发环境 进行 YOLOv8 模型推理的开发测试环境

文章大纲 IDE 选择纯开源首选 Codeblocks 跨平台开发IDE其次选择 visual studio 社区版 or visual studio code包管理MSYS2pacmanconda & mambavcpkgNuGetapt-get手动配置 Visual studio 开发环境下载 visual studio基本配置

Modbus通信协议2

一、Modbus概述 1.MODBUS通信栈&#xff08;软件实现方法&#xff09; 2.MODBUS应用协议 2.1 MODBUS应用协议介绍 Modbus是一种简单客户机/服务器应用协议&#xff1b;客户机能够向服务器发送请求&#xff1b;服务器分析请求&#xff0c;处理请求&#xff0c;向客户机发送应…

vue3+cli-service配置代理,跨域请求

一、配置代理端口和代理转发 在vue.config.js文件中 const {defineConfig} require(vue/cli-service)module.exports defineConfig({devServer: {host: 0.0.0.0,port: 8088, // 启动端口号proxy: {/api: { // 请求接口中要替换的标识target: , // 代理地址&#xff0c;后…

金混合纳米粒子催化级联反应产生一氧化碳气体对抗糖尿病牙周炎

引用信息 文 章&#xff1a;Cascade Reactions Catalyzed by Gold Hybrid Nanoparticles Generate CO Gas Against Periodontitis in Diabetes. 期 刊&#xff1a;Advanced Science&#xff08;影响因子&#xff1a;15.1&#xff09; 发表时间&#xff1a;2024年…

汽车IVI中控开发入门及进阶(二十四):杰发科技AC8015

前言: 在此之前的大部分时间,四维图新更多的是以图商的身份在业内出现,但现在四维图新图商之外的技术积累提现在了杰发科技身上,或者是从图商到汽车智能化一体解决方案供应商的角色转变。汽车智能化,可以简单的归为座舱智能化和智能驾驶两个板块。 随着汽车变得越来越智能…

pvt对net delay的影响

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 有星球成员提问: pt中在同一个corner下的net的为啥在min和max的情况下读RC值是不一样的呢??不应该都是根据spef来的吗?? 回答: 这个其实是个误区,相同RC corner情况下我们看report_delay_…

《疯狂python讲义》笔记:类和对象

文章目录 1.类方法classmethod和静态方法staticmethod2.函数装饰器 1.类方法classmethod和静态方法staticmethod 类方法classmethod&#xff1a;第一个参数cls都会被自动绑定到类本身&#xff0c;无论是类还是对象都可调用。 静态方法staticmethod&#xff1a;无论是类还是对象…