首页 > 数据库 >redis中知识以及面试题

redis中知识以及面试题

时间:2024-10-30 22:31:07浏览次数:5  
标签:AOF 面试题 持久 文件 知识 redis aof 重写

一、非关系型数据库NoSql

如下四种类型都是非关系型数据库

1.键值存储数据库(Key-Value)

如redis,就是键值存储数据库

2.列存储数据库

如clickhouse是列存储

3.文档型数据库

4.图形数据库(Graph)

二、redis的特点

redis是一个高性能的非关系型数据库,其中的所有数据形式都是以键值对的方式来存储的,redis支持持久化,并且redis是单线程和单进程的

三、redis中的数据类型

String,list,set,zset,hash五大类型
具体类型看上一个博客

四、Redis持久化机制

1.RDB持久化,快照模式(默认)

这一方式可以将某一时刻的所有数据写入硬盘中,保存的文件形式是以rdb结尾的,所以也叫RDB方式,也称为快照持久化

客户端方式之一:bgsave

在命令行中输入bgsave,当接收到该命令的时候,reids会调用一个fork来创建一个子进程,然后子进程负责将数据写入磁盘中,而父进程继续处理命令

客户端方式之save命令

当redis接收到save命令时,在redis服务器快照创建完毕之前将不再响应其他命令,会导致其丢失这段时间的数据

配置生成快照名称和位置

1.- dbfilename dump.rdb
2.修改生成位置

  • dir ./
    注:这种方式不太好,一般不用,会导致数据丢失

2.AOF持久化,只追加日志文件

特点:

这种方式会将所有客户端执行的写命令全部记录到日志文件中,AOF持久化会将被执行的命令写到AOF文件的末尾,因此redis只要从头到尾执行一遍AOF文件就能恢复AOF文件记录的数据集

开启AOF持久化

客户端本来是没有开启AOF持久化的,需要在配置中开启
1.开启的AOF持久化
-a.修改appendnoly yes 开启持久化
-b.修改 appendfilename “appendonly.aof” 指定生成文件名称

日志文件追加的频率

在redis的配置文件中,可以修改AOF追加文件的频率
-appendfsync everysec | always | no三种写法
其中everysec是默认的,一般我们也只用这个

注意事项

由于会将所有的命令写入AOF文件中,所以会导致文件随着执行的次数越来越大,例如我们调用incr test一百次,aof文件就会存储一百次这个命令,
而其中99条都是不需要的,只需要保存一条set test 100就够了,因此为了压缩aof的持久化文件redis提供了重写AOF文件的机制

AOF重写

用来在一定程度上减小AOF文件的体积,加快启动速度,还能保证数据不丢失

触发重写的方式

1.使用客户端方式触发重写
-执行bgrewriteaof的命令,不会阻塞redis服务

2.服务器配置方式自动触发

  • 配置redis.conf中的auto-aof-rewrite-percentage选项 参加下图↓↓↓
  • 如果设置auto-aof-rewrite-percentage值为100和auto-aof-rewrite-min-size 64mb,并且启用的AOF持久化时,那么当AOF文件体积大于64M,并且AOF文件的体积比上一次重写之后体积大了至少一倍(100%)时,会自动触发,如果重写过于频繁,用户可以考虑将auto-aof-rewrite-percentage设置为更大

重写机制的不同

7.0版本之前:
会有一个子进程和父进程,子进程开始在临时文件中写入新的AOF,父级将所有更新的积累在内存缓冲区中,同时它会将新的修改写入到旧的仅追加文件

7.0版本之后:
会有一个子进程和父进程,子级开始在临时文件中写入新的基本AOF,父级打开一个新的增量AOF文件以继续写入更新,如果重写失败,则旧的 base 和 increment 文件(如果有)以及这个新打开的 increment 文件表示完整的更新数据集

标签:AOF,面试题,持久,文件,知识,redis,aof,重写
From: https://www.cnblogs.com/ndmtzwdx/p/18516533

相关文章

  • 软件测试知识点汇总
    第一部分:(软件)测试概念类1、软件质量软件质量是“软件满足规定或潜在用户需求特性的总和”。反映出如下3方面的问题:1)软件需求是度量软件质量的基础。不符合需求的软件就不具备质量。2)软件人员必须遵循软件过程规范,用工程化的方法来开发软件。3)满足一些没有明确规定的隐含......
  • Java面试题中高级进阶(JVM篇01)
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说堆和栈的区别?什么时候会触发FullGC?什么是Java虚拟机?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘***12万字的java面试题整理***说说堆和栈的区别栈是运行时单位,代表着逻辑,内含基本数据类型和......
  • Java面试题中高级进阶(JVM篇01)
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说堆和栈的区别?什么时候会触发FullGC?什么是Java虚拟机?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘***12万字的java面试题整理***说说堆和栈的区别栈是运行时单位,代表着逻辑,内含基本数据类型和堆中对......
  • Spring Boot 20道面试题
    +目录1.什么是SpringBoot?2.SpringBoot的主要优点是什么?3.SpringBoot的核心注解是哪个?它有什么作用?4.SpringBoot如何加载外部配置文件?5.SpringBoot如何实现跨域请求?6.SpringBoot的热部署是如何实现的?7.SpringBoot如何配置多数据源?8.SpringBoot中如何实现AOP?9.Spr......
  • html和css面试题
    1:主流浏览器的内核分别是什么?IE:trident内核 [‘traidnt]Firefox:gecko内核 [ˈɡekəʊ]Safari:webkit内核Chrome,Opera:Blink内核(基于webkit) 2:每个HTML文件开头都有<!DOCTYPE html>,它的作用是什么<!DOCTYPEhtml>声明位于文档中的最前面的位置,此标签告知浏......
  • 力扣面试题 _ 1393
    .-力扣(LeetCode)1.目标        编写解决方案报告每只股票的 资本损益。        股票的 资本利得/损失 是指一次或多次买卖该股票后的总收益或损失。        以 任意顺序 返回结果表。2.分析3.实现selectstock_name,sum(cas......
  • 加速企业转型,掌握大规模敏捷SAFe认证Leading SAFe知识
    ​在数字化快速发展的时代,企业需要灵活应对市场变化,实现敏捷转型。SAFe(ScaledAgileFramework)作为全球应用最广泛的大规模敏捷框架,为企业提供了有效的解决方案。为了帮助企业培养大规模敏捷变革的领导者,我们推出了**SAFe认证LeadingSAFe官方认证班**。 什么是SAFe?SAFe是一个......
  • 前端面试题整合(有html、css、js、vue等)
    #一、html#行内外空元素行内元素:a/img/span/b/strong/input/select/section块级元素:div/p/table/ul/li/h1-h6空元素:br/hr/img/input/link/meta#浏览器内核Trident:IE,360,搜狗Gecko:FirefoxPresto:旧OperaWebkit:Safari,旧ChromeBlink:Chrome,Opera#浏览器存储c......
  • GraphRAG如何构建知识图谱Knowledge Graph (GraphRAG系列第二篇)
       GraphRAG工作的第一步,是将输入的文档集合,按一定的策略拆分成一个一个chunks,然后解析每个chunks,将chunk中所关注的实体(entity)和关系(relation)解析出来,以此构建知识图谱。     那问题来了,GraphRAG是如何抽取文本中的实体及其间的关系,是像以前NLP任务那样,通......
  • redis 安装
    什么是Redis总结:redis是一个内存型的数据库Redis特点(面试必问)-Redis是一个高性能key/value内存型数据库在redis中,所有的数据形式都是以键值对的方式来存储的-Redis支持丰富的数据类型string,list,set,sortedset,hash指的是键值对中的值的类型-Redis支持持......