Redis面试真题总结(四)

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

在这里插入图片描述

AOF 持久化?

AOF(Append Only File)持久化是Redis提供的另一种数据持久化方法。

通过AOF持久化,Redis将写操作追加到一个文件中

  • 以保证数据在重启或者异常情况下的持久性。

AOF持久化工作原理:

追加写操作:

  • 当有写操作(增删改)发生时,Redis会将这些写操作以文本的形式追加到AOF文件末尾。

文件同步:

  • Redis会通过fsync()系统调用将AOF文件的内容强制刷写到磁盘上,以保证数据的持久性。
  • 可以通过配置appendfsync参数来调整同步频率
    • 可以选择每次写入都同步(always)、每秒同步一次(everysec)或者操作系统自行决定(no)。

文件重写:

  • 当AOF文件变得过大时,可以通过BGREWRITEAOF命令触发AOF文件的重写。
  • Redis会启动一个子进程,将当前内存中的数据重写到一个新的AOF文件中,并且优化写入操作,减小AOF文件的体积。

恢复数据:

  • 在Redis重启的时候,会通过加载AOF文件中保存的写操作来恢复数据,重建内存中的数据状态。

AOF持久化的优点:

数据可靠性高:

  • AOF持久化记录了写操作的历史记录,因此在异常断电或者重启时
    • 可以通过AOF文件将数据快速恢复,避免了数据丢失的风险。

数据实时性高:

  • 相比于RDB持久化的定期快照记录,AOF持久化会实时追加写操作到AOF文件中
    • 因此对于实时性要求较高的应用场景更为适合。

可读性好:

  • AOF文件以纯文本形式记录写操作,可以直接查看和修改AOF文件,方便进行恢复和数据分析。

AOF持久化的缺点:

文件体积较大:

  • 由于AOF记录了所有的写操作历史,因此AOF文件会比RDB文件大,可能会占据更多的磁盘空间。

写入操作耗时:

  • 由于每次写操作都需要追加到AOF文件中,相比于RDB持久化,AOF持久化会有一定的写入延迟,可能会影响Redis的性能。

文件重写需要时间:

  • 当AOF文件变得过大时,进行AOF文件的重写是一项耗时的操作,可能会对Redis的性能产生一定影响。

Redis默认采用哪个持久化方式?

Redis默认采用的持久化方式是RDB(Redis Database)持久化。

  • 在默认配置下,Redis将周期性地将内存中的数据生成快照并写入磁盘,以保证数据的持久性。

RDB持久化通过将数据以二进制的形式保存到磁盘的RDB文件中,包含了Redis数据的全量快照。

  • 可以通过配置文件中的save参数来设置快照生成的条件
    • 比如在指定的时间间隔内、指定的写操作次数等。

Redis 内存淘汰策略有哪些?

Redis提供了一些策略,以便在届满最大内存限制时进行内存淘汰:

noeviction:

  • 当内存不足以容纳更多数据时,新的写入操作会报错。这是默认策略。

allkeys-lru:

  • 在内存不足时让位于新值内容的,是最近最少使用的键(LRU:Least Recently Used)。

volatile-lru:

  • 在设置了过期时间的键中,淘汰最近最少使用的键,新的写入操作会报错。

allkeys-random:

  • 在内存不足时随机删除某个键的值,为新值让出空间。

volatile-random:

  • 在设置了过期时间的键中,随机淘汰一些键。

volatile-ttl:

  • 在设置了过期时间的键中,有更早过期时间的键优先被淘汰。

如果你的程序可以接受偶发的性能下降,allkeys-lru可能是一个好选择。

如果你知道一些键是可以安全删除的,你可以为它们设置过期时间,然后使用volatile-lru

如果数据的重要性不等,你可以为重要的数据设置过期时间,然后使用volatile-ttl策略。

Redis过期键的删除策略

Redis使用过期键的删除策略来自动清除已经过期的键,以释放内存空间。

Redis采用了多种策略来删除过期键,具体的删除策略由配置参数eviction决定。

常见的策略包括:

定期删除策略(定时删除):

  • Redis会在每个指定的时间间隔(由配置参数hz决定)内,检查一批键是否过期,然后删除过期的键。
  • 这种策略不会频繁地检查每个键是否过期,因此对CPU的消耗较少。

惰性删除策略(懒汉式删除):

  • 当访问某个键时,Redis会先检查该键是否过期,如果过期则立即删除。
  • 这种策略相对更加高效,因为它只会在需要时才进行检查和删除操作。

定期删除与惰性删除的结合:

  • Redis同时使用了定期删除和惰性删除两种策略,在有限的时间间隔内通过定期删除来批量清除过期键
    • 同时在读写操作中使用惰性删除来保证及时的清理。

需要注意的是,无论采用哪种删除策略,Redis并不是立即清除过期键

  • 而是通过在查询和写入操作时进行过期键的检查和删除。

因此,在过期时间到达之后,过期键可能仍然存在一段时间,直到Redis执行删除操作。

  • 如果需要确保即时删除过期键,可以使用DEL命令主动删除过期键。

同时,可以通过配置参数maxmemory来限制Redis使用的内存大小

  • 当达到内存限制时,Redis会根据所采用的删除策略来淘汰一些数据以释放内存空间。

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

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

相关文章

ubuntu安装emqx

目录 1.预先下载好emqx压缩包 2.使用tar命令解压 3.进入bin目录 5.放开访问端口18083 6.从通过ip地址访问emqx后台 7.默认用户名密码为admin/public 8.登录后台 9.资源包绑定在此博文可自取 1.预先下载好emqx压缩包 2.使用tar命令解压 sudo tar -xzvf emqx-5.0.8-el8-…

精密单轴纵切自动车床

精密单轴纵切自动车床,作为现代机械加工领域的重要设备,以其高精度、高效率的特点,广泛应用于各种精密零件的加工制造中。下面,我将从几个方面来详细解析这种车床的特点和应用。 ‌一、定义与特点‌ ‌精密单轴纵切自动车床‌&…

[笔记]2024大厂变频器,电机参数一览

注意中心高,在用铁心规格,功率换算表 温升曲线在预防性维护过程能用到 注意各类电流参数,上面双极对,下面3极对。 另一种极对数 4极对的电机参数可参考,不常用。 emc滤波, Sto,通讯接口 颜色区分的接口设计 一组新强…

灵当CRM index.php接口SQL注入漏洞复现 [附POC]

文章目录 灵当CRM index.php接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 灵当CRM index.php接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相关技…

1.1.4 计算机网络的分类

按分布范围分类: 广域网(wan) 城域网(man) 局域网(lan) 个域网(pan) 注意:如今局域网几乎采用“以太网技术实现”,因此“以太网”几乎成了“局域…

实景三维夯实数字乡村孪生底座

随着数字乡村建设的不断推进,实景三维技术在乡村规划、管理、服务等方面发挥着越来越重要的作用。本文将探讨实景三维技术如何夯实数字乡村的孪生底座,为乡村的可持续发展提供强有力的支撑。 一、数字乡村建设的背景 数字乡村建设是推动乡村全面振兴、…

C# winforms DataGridView设置数据源自动显示表格

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

Google Earth Engine(GEE)——全球土地覆盖10米的更精细分辨率观测和监测数据集(FROM-GLC10)

前言 – 床长人工智能教程 全球土地覆盖10米的更精细分辨率观测和监测(FROM-GLC10) 这项工作和论文的目的是对2017年用不同卫星上的传感器获取的10米分辨率图像进行分类。我们通过10米分辨率的地图FROM-GLC10进行检查,并与我们2017年30米全球…

深度学习与应用:行人跟踪

**实验 深度学习与应用:行人跟踪 ** ------ **1、 实验目的** ------ - 了解行人跟踪模型基础处理流程 - 熟悉行人跟踪模型的基本原理 - 掌握 行人跟踪模型的参数微调训练以及推理的能力 - 掌握行人跟踪模型对实际问题的应用能力,了解如何在特定的场景和…

HTML中的表单(超详细)

一、表单 1.语法 <!-- action&#xff1a;提交的地方 method&#xff1a;提交的方式&#xff08;get会显示&#xff0c;post不会&#xff09; --> <form action"#" method"get"><p>名字&#xff1a;<input name"name" ty…

大规模数据处理:分库分表与数据迁移最佳实践

什么是分库分表 分库分表是一种数据库架构优化策略&#xff0c;它将数据分散存储在多个数据库或表中&#xff0c;以此来提高系统的可扩展性和性能。 虽然分库分表能够提升系统的整体性能&#xff0c;但是也不要一上来就分库分表&#xff0c;如果系统在单表的情况下&#xff0…

Vue3使用vue-quill富文本编辑器

安装依赖 npm install vueup/vue-quill quill quill-image-uploader自定义字体 把自定义字体样式放入font.css中在main.js中导入 .ql-snow .ql-picker.ql-font .ql-picker-label[data-valueSimSun]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-valueSimSun]…

VS Code使用Git Bash终端

Git Bash可以运行linux命令&#xff0c;在VS Code的终端界面&#xff0c;找到号旁边的箭头&#xff0c;就能直接切换了 当然&#xff0c;前提是安装了Git Bash&#xff0c;并且在资源管理器里&#xff0c;能鼠标右键出"Git Bash Here"

微信getUserProfile不弹出授权框

当我们在微信小程序开发工具中想要使用getUserProfile来获取个人信息的时候&#xff0c;会发现不弹出授权框&#xff0c;这是什么原因呢&#xff1f; 早在2022年的小程序官方公告中就已经明确给出了小程序用户头像昵称获取规则调整公告 因此如果还想继续使用getUserProfile的弹…

Unity 外描边简单实现(Shader Graph)

1&#xff1a;原理 将物体的模型空间的位置&#xff08;也就是顶点数据&#xff09;放大&#xff0c;作为一个单独的渲染通道单独渲染&#xff0c;这时候模型是已经发大过的&#xff0c;要想看到外描边的效果&#xff0c;需要将正面显示的东西给去掉&#xff0c;显示背面渲染的…

uniapp微信小程序,获取上一页面路由

在进入当前页面的时候&#xff0c;判断是不是从某个页面跳转过来的&#xff08;一般是当前页面为公共页面是出现的&#xff09;&#xff0c;比如 A-->B C-->B ,那么 要在 C跳转到B页面的时候多个提示语什么的 而在A跳转到B时不需要&#xff0c;那么就要判断 上一页面的…

衡石分析平台系统管理手册-功能配置之SMTP 服务

SMTP 服务​ SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范&#xff0c;通过它来控制邮件的中转方式。 HENGSHI 用户需要开启 SMTP 服务并进行配置&#xff0c;才能收到系统发送邮件。 SMTP 服务需要用户配置服务器…

传递正能量

“扫黑除恶&#xff0c;弘扬正气”学习心得 近日&#xff0c;我深入学习了关于“扫黑除恶&#xff0c;弘扬正气”的重要精神和相关政策&#xff0c;这次学习不仅让我对扫黑除恶的正确性、紧迫性和重要性有了更深的理解&#xff0c;也让我对如何弘扬社会正气、维护社会稳…

socket是什么?套接字是什么?

Socket的原意是“插座”。在计算机通信领域&#xff0c;socket 被翻译为“套接字”&#xff0c;它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定&#xff0c;一台计算机可以接收其他计算机的数据&#xff0c;也可以向其他计算机发送数据。 我们把插头插到插…

仪表放大器AD620

AD623 是一款低功耗、高精度的仪表放大器&#xff0c;而不是轨到轨运算放大器。它的输入电压范围并不覆盖整个电源电压&#xff08;轨到轨&#xff09;&#xff0c;但在单电源供电下可以处理接近地电位的输入信号。 AD620 和 AD623 都是仪表放大器&#xff0c;但它们在一些关键…