常见面试题22

简介: Redis提供RDB和AOF两种持久化方式,RDB快照高效节省空间但可能丢数据,AOF日志安全但文件较大。支持混合使用以提升可靠性。内存淘汰策略包括LRU、LFU、随机等8种,适用于不同场景。过期键采用惰性删除与周期删除结合的方式。Redis核心操作为单线程,4.0起引入后台线程,6.0支持多线程IO,因纯内存操作、无锁竞争和I/O多路复用而高性能。

redis持久化策略

Redis 中常用的两种持久化策略:

  1. RDB(Redis DataBase)
  1. RDB 是将 Redis 在内存中的数据定期保存到磁盘上的一种持久化方式。通过快照的方式,将数据保存为一个压缩的二进制文件(.rdb 文件)。
  2. RDB 的优点是备份数据快速,适合用于数据恢复和全量备份;同时由于是紧凑的二进制文件,可以减少磁盘空间的占用。
  3. RDB 的缺点是可能会出现数据丢失,因为数据是定期保存的;另外,在数据量较大时,生成快照可能会影响 Redis 的性能。
  1. AOF(Append Only File)
  1. AOF 是通过将 Redis 所有写操作追加到文件末尾的方式来记录数据变动的一种持久化方式。当 Redis 重启时,可以通过重新执行 AOF 文件中的写操作来还原数据。
  2. AOF 的优点是数据更加安全,可以保证每次写操作都被记录下来;同时,AOF 文件可以提供更好的数据持久性保证。
  3. AOF 的缺点是相对于 RDB,AOF 文件通常会比较大,可能会增加磁盘的占用;另外,AOF 文件的恢复速度可能会比 RDB 恢复慢一些。

除了单独使用 RDB 或 AOF 外,Redis 还支持同时使用 RDB 和 AOF 两种持久化方式,以提供更好的数据持久性和灾难恢复能力。此外,Redis 也支持实时数据同步(Replication)来提高数据的可用性和容错能力。

redis内存淘汰策略

Redis支持8种不同的内存淘汰策略:

  • noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略。
  • volatile-ttl: 对设置了TTL的key,比较key的剩余TTL值,TTL越小越先被淘汰
  • allkeys-random:对全体key ,随机进行淘汰。也就是直接从db->dict中随机挑选
  • volatile-random:对设置了TTL的key ,随机进行淘汰。也就是从db->expires中随机挑选。
  • allkeys-lru: 对全体key,基于LRU算法进行淘汰
  • volatile-lru: 对设置了TTL的key,基于LRU算法进行淘汰
  • allkeys-lfu: 对全体key,基于LFU算法进行淘汰
  • volatile-lfu: 对设置了TTL的key,基于LFI算法进行淘汰

比较容易混淆的有两个算法:

  • LRULeastRecentlyUsed),最近最久未使用。用当前时间减去最后一次访问时间,这个值越大则淘汰优先级越高。
  • LFULeastFrequentlyUsed),最少频率使用。会统计每个key的访问频率,值越小淘汰优先级越高。

redis数据删除

Redis的过期KEY删除策略有两种:

  • 惰性删除
  • 周期删除

惰性删除,顾明思议就是过期后不会立刻删除。Redis会在每次访问KEY的时候判断当前KEY有没有设置过期时间,如果有,过期时间是否已经到期。

周期删除:顾明思议是通过一个定时任务,周期性的抽样部分过期的key,然后执行删除。

redis是单线程吗

Redis 4.0 以前是完全单线程;

Redis从4.0开始,也有后台线程在工作,处理一些较为缓慢的操作,例如无用连接的释放、大 key 的删除等;

Redis 6.0引入多线程IO,只是用来处理网络数据的读写和协议的解析,而执行命令依旧是单线程,所以不需要去考虑set/get、事务、lua等的并发问题

为什么单线程快

  • 纯内存操作,避免大量访问数据库,减少直接读取磁盘数据,redis将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度快.
  • 单线程操作,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗.
  • 采用了非阻塞I/O 多路复用机制.
目录
相关文章
|
2月前
|
机器学习/深度学习 存储 并行计算
大模型推理加速技术:FlashAttention原理与实现
本文深入解析大语言模型推理加速的核心技术——FlashAttention。通过分析传统注意力机制的计算瓶颈,详细阐述FlashAttention的IO感知算法设计、前向反向传播实现,以及其在GPU内存层次结构中的优化策略。文章包含完整的CUDA实现示例、性能基准测试和实际部署指南,为开发者提供高效注意力计算的全套解决方案。
361 10
|
存储 数据采集 编译器
STC8系列单片机介绍
STC8系列单片机是中国STC公司生产的一款8位单片机系列产品。作为STC公司的主打产品之一,STC8系列单片机以其高性价比、丰富的外设资源和强大的功能而备受青睐。本文将详细介绍STC8系列单片机的特点、应用领域、开发工具和资源支持等方面。 一、STC8系列单片机的特点 1. 强大的8051内核:STC8系列单片机采用了高性能的8051内核,具有快速的指令执行速度和高效的运算能力。8051内核被广泛应用于嵌入式系统中,具有稳定可靠的特点。 2. 大容量闪存存储器:STC8系列单片机内置大容量的闪存存储器,可存储程序代码和数据。闪存容量从4KB到128KB不等,可以满足不同应用需求。闪存存储
2406 0
|
4天前
|
数据管理 编译器 C++
为什么好多人电脑都是一样的报错。为什么好多游戏和应用安装报错都一样?
简介: 0xc000007b报错常见于游戏和软件启动失败,主要因缺失或版本不符的Visual C++ 运行库所致。多数程序依赖该运行库提供的基础功能,如数学运算、内存管理、文件读写等。若系统中缺少对应版本(如2015、2022),或32/64位不匹配,均会导致报错。解决方法包括安装完整VC运行库、修复损坏DLL文件。建议用户安装VC运行库合集,确保兼容性。
55 5
|
2月前
|
存储 缓存 NoSQL
Redis常见面试题全解析
Redis面试高频考点全解析:从过期删除、内存淘汰策略,到缓存雪崩、击穿、穿透及BigKey问题,深入原理与实战解决方案,助你轻松应对技术挑战,提升系统性能与稳定性。(238字)
|
2月前
|
机器学习/深度学习 缓存 自然语言处理
【万字长文】大模型训练推理和性能优化算法总结和实践
我们是阿里云公共云 AI 汽车行业大模型技术团队,致力于通过专业的全栈 AI 技术推动 AI 的落地应用。
1437 38
【万字长文】大模型训练推理和性能优化算法总结和实践
|
2月前
|
缓存 NoSQL 数据库
从0到1构建高并发在线教育网站:架构设计与实战破局
引言:为什么是在线教育?为什么是高并发? 近年来,在线教育经历了爆发式增长。其技术核心,就是一个典型的内容型+交互型网站。它既有电商秒杀般的课程购买场景,又有流媒体般的视频直播/点播需求,同时还包含了社区论坛般的评论、问答互动。 这种业务复杂性,使得在线教育网站成为一个绝佳的全栈实践项目。而其中最大的技术挑战,往往来自于 “高并发” ——当一门热门课程发布、一位名师开讲直播时,瞬间涌入的流量如何平稳承接?这就是我们今天要攻克的堡垒。
515 84
|
4天前
|
人工智能 自然语言处理
构建AI智能体:四十一、大模型思维链提示工程:技术原理与行业应用案例分析
本文介绍了思维链提示技术及其应用。思维链提示是一种引导大模型进行逐步推理的提示工程技术,通过结构化提示模拟人类解决问题的逻辑分析路径,使模型能够显式化中间推理步骤,从而提升推理准确性与可解释性。文章详细阐述了思维链提示的关键特征(步骤可解释性、逻辑链条完整性、问题分解能力)和工作原理,并通过数学推理、逻辑分析和多轮复杂问题三个案例展示了其具体应用流程。该技术在教育辅导、商业决策和科研分析等领域具有重要价值,能够突破传统大模型的黑箱推理瓶颈,提高AI系统的决策透明度和可靠性。
106 13
|
4天前
|
人工智能 算法 架构师
你的团队是"精锐特种兵",还是"草台班子"?就差这一份"源代码"
针对技术团队管理混乱、过度依赖个人的痛点,提出用AI指令将经验转化为标准SOP的解决方案。通过工程化思维重构管理流程,实现团队经验的"开源"与"复用",释放核心人才价值。
79 9
|
2月前
|
Linux 虚拟化 iOS开发
VMware Fusion 25H2 发布 - 领先的免费桌面虚拟化软件
VMware Fusion 25H2 for Mac - 领先的免费桌面虚拟化软件
788 0
VMware Fusion 25H2 发布 - 领先的免费桌面虚拟化软件