redis中知识以及面试题

news/2025/1/17 15:52:05/文章来源:https://www.cnblogs.com/ndmtzwdx/p/18516533

一、非关系型数据库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 文件表示完整的更新数据集

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

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

相关文章

考研打卡(3)

开局(3) 开始时间 2024-10-30 21:38:56 结束时间 2024-10-30 22:27:21呜呜今天体侧了数据结构设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行__躺 的分配和回收才能使得初始关键字序列变成有序序列。(武汉科技大学2014) A 3 B 4 C 5 D 8A 3答案…

学习笔记(十四):ArkUi-单选框 (Radio)

概述: 单选框组件,通常用于提供相应的用户交互选择项,同一组的Radio中只有一个可以被选中。 单选框组件不支持自定义样式 一、创建单选框 接口形式如下: value 为单选框名称,group为单选框所在组的名称,同一个组内最多只有一个单选框为选中状态Radio(options: {value: st…

【专题】2023-2024中国保险数字化营销调研报告汇总PDF洞察(附原数据表)

原文链接: https://tecdat.cn/?p=38063 在时代浪潮的推动下,中国保险行业正经历着一场波澜壮阔的变革之旅。 2023 年,中国经济迈向高质量发展阶段,保险公司纷纷聚焦队伍转型,专业化、职业化代理人成为行业新方向。回顾保险代理人队伍发展,历经多次变革,从早期扩张到面临…

2024CCPC哈尔滨部分题解

赛时被评测机卡死了 M.奇怪的上取整求\(\sum_{i=1}^{n} f(n,i)\) \(Input\) 第一行一个整数\(T(1<=T<=10^3)\),表示数据组数 对于每组数据,一行一个整数\(n(1<=n<=10^9)\) \(Output\) 对于每组数据,输出一行一个整数,表示答案。 \(Sample\) 3 5 451 114514 ——…

基于thinkphp+fastadmin+uniapp的单商户商城

1 、 系统概述多平台的单商户多门店系统,支持微信公众号、微信小程序、h5网页、Android、IOS的购物商城,拥有强大灵活的店铺装修、自定义模板、多规格商品、运费模板、库存管理、全端分享等。2、技术栈thinkphp uniapp vue3 vite redis element-plus easy-wechat mysql3、 解…

什么是多态?面向对象中对多态的理解

多态(Polymorphism)是面向对象编程(OOP)中的一个核心概念,它允许对象以多种形式出现。多态性使得同一个接口可以用于不同的数据类型,从而使得代码更加灵活和可扩展。简单来说,多态就是一个接口,一个类,一个抽象类,一个类里面的方法,不同类的同一个方法,都可以有多种…

HarmonyOS:DevEco Profiler调优工具

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/18515687➤如果链接不是为敢技术的博客园…

基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现九

可以二次开发 前台功能:首页、诗文、作者、名句、成语、赏析、翻译、典籍、注册、登录、个人中心等。 后台功能:作者列表、古诗词列表、名句列表、成语列表、典籍列表、用户管理、赏析管理、翻译管理等。 部分功能: 前台赏析信息控制器Controller、前台典籍信息控制器Contro…

基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现十

可以二次开发 前台功能:首页、诗文、作者、名句、成语、赏析、翻译、典籍、注册、登录、个人中心等。 后台功能:作者列表、古诗词列表、名句列表、成语列表、典籍列表、用户管理、赏析管理、翻译管理等。 部分功能: 前台个人中心信息控制器Controller、前台翻译信息控制器Co…

KMC数据库设计

存一下密钥管理中心数据库,免得找不到了具体表格:表名 列名 数据类型 主键 外键Keys KeyID INT PKKeyValue VARBINARY(256)KeyType VARCHAR(50)CreatedAt DATETIMEExpirationDate DATETIMEStatus ENUMKey_Pools PoolID INT PKPoolName ENUMDescription VARCHAR(255)Key_Pool_…

【设计模式】异步阻塞、异步回调模式

1 前言 为什么要看这个异步回调呢?是因为我上节在看 RocektMQ 发送消息的时候,它支持同步、异步、一次性的模式,后两者不会阻塞当前线程,但是看这两者都没用到线程池,那它是如何处理的呢?我们看下三者最后的落点,都是在 NettyRemotingAbstract 这个类里:// NettyRemot…

DBeaver如何生成select,update,delete,insert语句

前言 我们在使用DBeaver时,经常是需要查看数据库表的。有时候,我们需要用DBeaver生成select,update,delete,insert等语句,这样可以使我们方便的开发代码,那么应该怎么生成呢? 如何生成语句 首先,我们点击下我们要生成语句的表,右键点击。然后,我们点击下生成SQL选项…