关于Redis的面试题(一)

news2024/12/25 13:19:18

一、为什么要使用Redis

  1. 内存数据库,速度很快
  2. 工作单线程worker,串行化,原子操作,IO线程是多线程的。避免上下文切换
  3. 使用 IO模型,天生支撑高并发
  4. kv模型,v具有类型结构
  5. 具有本地方法,计算数据移动
  6. 二进制安全,value值最大为512MB

二、Redis是多线程还是单线程

Redis在6.0版本之前是单线程的,到了6.0版本后,IO流是一个线程池,是多线程的,但工作线程依旧是单线程。

三、Redis持久化方法

Redis是一个内存数据库,当遇到突然断电或者服务器崩溃时,里面的数据就会全部丢失,这时就需要Redis持久化。
Redis持久化的工作机制就是将数据保存到磁盘中,利用永久性存储介质来保存数据,在特定时间将保存的数据进行恢复
有两种方法可以实现:

  1. AOF:存储操作过程,关注点在数据的操作过程
  2. RDB:存储数据结果,关注点在数据
    在这里插入图片描述

四、Redis持久化的两个方法

3.1 RDB

在指定的时间间隔内将内存中的数据集中写进磁盘中,也就是快照文件,数据恢复就是将快照文件读到内存中。

Redis会利用fork函数创建一个子线程进行持久化,会先将数据写入到一个临时文件中,等持久化过程结束后,将临时文件替换上次持久化的文件。

fork函数的作用就是复制一个当前线程作为当前线程的子线程,子线程与当前线程的所有数据数值一致。请添加图片描述
RDB的优缺点
缺点:

  1. 快照时间有间隔,不能实时备份,丢失数据可能会很多
  2. 在数据集比较庞大时,开启子线程备份数据,fork()运行会非常耗时,服务器会在一定时间内停止处理客户端。

优点:

  1. 恢复数据的速度快
  2. 备份的文件就是原始文件的内存大小,不会额外占用内存空间

RDB的触发方式

  • 手动触发:通过书写命令触发
  • 自动触发:通过配置参数设置自动触发

3.2 AOF

会将客户端的写操作以日志的形式追加到appendonly.aof文件末尾,在Redis服务器重启后,加载aof文件中的所有命令,用来恢复数据。
请添加图片描述
AOF的优缺点
缺点:

  • 生成的文件体积较大
  • 数据恢复速度较RDB更慢

优点:

  • 数据安全性较高,不容易丢失数据
  • AOF文件有序保存所有写操作,可读性较高

AOF的触发方式

  • 手动触发:通过bgrewriteaof命令:重写AOF持久化生成aof文件
  • 自动触发:redis默认没有开启AOF。需要通过配置文件开启

4 Redis结构体

请添加图片描述

四、安装

1.启动server

docker run -d -p 6379:6379  --name redis01 redis:7.2.4

请添加图片描述以上命令,每次启动新的Redis容器,数据会丢失。

我们需要挂载数据文件,在宿主机上面,这样就可以持久化数据.

docker run -p 6379:6379 -d --name redis01 --restart=always 
-v /opt/redis/redis.conf:/etc/redis.conf 
-v /opt/redis/data:/data 
redis:7.4.0 redis-server /etc/redis.conf

//如果拉不下来请使用m.daocloud.io/docker.io/redis:7.4.0

五、在百万keys的Redis中,如何模糊查询某一个key?

典型回答

通常是使用 KEYS 命令或 SCAN命令配合模式匹配,但是KEYS命令在数据量较大时,可能会导致性能问题,因为它会阻塞服务器并消耗大量资源,因此在生产环境中,推荐使用SCAN命令使用类似的功能。

SCAN是一个基于游标的迭代器,SCAN在每次被调用之后,都会向用户返回一个新的游标,用户在下一次迭代时需要使用这个游标作为SCAN命令的游标参数,来延续迭代过程。当游标设置为0时,开始第一次迭代,当返回的游标为0时,表示迭代结束。SCAN返回的是一个包含两个元素的数组,第一个元素是用于下次迭代的游标,第二个元素是一个包含所有被迭代的元素,元素的数量由迭代器决定。

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

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

相关文章

政府经济学(练习题)

政府经济学(练习题) 一、单项选择题 政府经济活动的主体是( )。 A.各级政府 B.各级人大 C.各级政协 D.各级党委政府经济的依据主要是( )。 A.私人财产所有权 B.社会公共权力 C.道德劝说 D.法律制度1776年亚…

通过指令深入了解Linux 3

🌈个人主页:Yui_ 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1.Linux下的基本指令1.1 more指令(有更好的平替)1.2 less指令1.3 head指令1.4 tail指令1.5 date指令…

二、Matlab图像处理基础

文章目录 一、Matlab图像处理工具箱二、图像文件的读取2.1 文件信息的读取2.2 图像文件的读取2.3 图像文件的保存2.4 图像文件的显示2.5 像素信息的显示 本章知识点总结 一、Matlab图像处理工具箱 在帮助文档可以搜索到图像处理工具箱的介绍 二、图像文件的读取 2.1 文件信息…

论文笔记:OneBit: Towards Extremely Low-bit Large Language Models

202402 arxiv 1 背景 模型量化主要通过把模型的线性层【nn.Linear】(Embedding 层和 Lm_head 层除外)转化为低精度表示实现空间压缩 此前工作的基础是利用 Round-To-Nearest(RTN)方法把高精度浮点数近似映射到附近的整数网格然而…

Sqlserver 创建只读权限用户

Sqlserver 创建只读权限用户 1、右键登录名->新建登录名 2、在常规选项卡中配置登录名、密码、数据库 3、服务器角色选项卡中配置只读角色 4、配置用户映射 5、安全对象选项卡和状态选项卡默认即可

Hadoop集群安装配置,spark集群安装配置

前提:准备3台linux服务器,并保证其网络可进行相互通信 假设三台机器IP分别为: 192.168.88.101 192.168.88.102 192.168.88.103一.配置三台服务器之间SSH免密登录,关闭防火墙,时间同步 三台服务器均执行以下1,2,3,4,5,6,8命令 1…

C++ primer plus 第17 章 输入、输出和文件:文件输入和输出03:文件模式:二进制文件

系列文章目录 17.4.5 文件模式 程序清单17.18 append.cpp 程序清单17.19 binary.cpp 文章目录 系列文章目录17.4.5 文件模式程序清单17.18 append.cpp程序清单17.19 binary.cpp17.4.5 文件模式1.追加文件来看一个在文件尾追加数据的程序。程序清单17.18 append.cpp2.二进制文…

05_ Electron 自定义菜单、主进程与渲染进程通信

Electron 自定义菜单、主进程与渲染进程通信 一、定义顶部菜单二、Electron 自定义右键菜单1、使用 electron/remote 模块实现 三、 Electron 主进程和渲染进程通信场景1:渲染进程给主进程发送异步消息场景2:渲染进程给主进程发送异步消息,主…

Vue3使用ECharts的自定义堆叠条形图(纵向)

先上效果图 展示区域 <div id"main" style"height: 300px; width: 100%"></div> 配置信息 每个种类的data数组是number数组&#xff0c;这里我使用的变量是从接口返回的数据&#xff0c;为了方便理解&#xff0c;年度考核的绿色种类&#x…

AT32F421驱动BLDC 配合上位机控制与调参

AT32F421驱动BLDC 配合上位机控制与调参 &#x1f527;AT32 电机控制与调参上位机软件&#xff1a;ArteryMotorMonitor&#xff1a;https://www.arterytek.com/cn/support/motor_control.jsp?index0&#x1f33f;测试电机参数&#xff1a;2204-12N14P&#xff0c;无感BLDC&…

Summer School science communication project--Laptop Selection Suggestion

目录 Introduction Audiance Usage CPU What is a central processing unit (CPU) Notable makers of CPUs GPU Graphics Card: GPU The classifications of graphics cards The brands of graphics cards Dedicated Graphics Cards GeForce MX Series: GeForc…

渠道刷量怎么办?Xinstall来帮你一键识破!

在App推广的道路上&#xff0c;数据是我们最得力的助手&#xff0c;也是我们最头疼的难题。每日下载量、安装量、注册量……这些看似简单的数字&#xff0c;背后却隐藏着无数的故事。哪个渠道在默默发力&#xff1f;哪个渠道又在浑水摸鱼&#xff1f;这一切&#xff0c;都需要我…

【生信入门linux篇】如何安装一个linux虚拟机用于学习

一.虚拟机 虚拟机&#xff08;Virtual Machine&#xff0c;简称VM&#xff09;是一种软件实现的计算机系统&#xff0c;它能够在物理计算机上模拟出多个独立的计算机环境。每个虚拟机都可以运行自己的操作系统和应用程序&#xff0c;就像在独立的物理计算机上一样。虚拟机技术…

(十)Dockerfile详解及使用教程

一、Dockerfile是什么 1、简介 Dockerfile是用来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本 官网地址&#xff1a;https://docs.docker.com/engine/reference/builder/ 构建步骤 编写Dockerfile文件docker build命令构建镜像docke…

基于Java+SpringBoot+Vue前后端分离药店/药品/药品采购/药品销售管理系统设计与实现(有视频讲解)

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

数据结构总体概述

参考&#xff1a; 【王道考研】王道数据结构与算法详细笔记&#xff08;全&#xff09;_王道数据结构笔记-CSDN博客 数据结构的三要素 一、数据的逻辑结构 逻辑结构是指数据元素之间的逻辑关系&#xff0c;即从逻辑关系上描述数据。 逻辑结构包括&#xff1a; 集合结构&#xf…

【数据结构】—— 内部排序算法详解

1、前言2、常见排序算法3、排序算法实现3.1 直接插入排序3.2 希尔排序3.3 选择排序3.4 堆排序3.5 冒泡排序3.6 快速排序3.6.1 单趟排序hoare法挖坑法双指针法 3.6.2 非递归实现3.6.3 常见问题基准值的选取小区间优化 3.7 归并排序3.7.1 递归实现3.7.2 非递归实现 3.8 计数排序 …

SAM2分割模型微调指南

SAM2&#xff08;Segment Anything 2&#xff09;是 Meta 推出的一款新模型&#xff0c;旨在对图像中的任何内容进行分割&#xff0c;而不局限于特定的类别或领域。该模型的独特之处在于其训练数据规模&#xff1a;1100 万张图像和 110 亿个掩码。这种广泛的训练使 SAM2 成为训…

AI大语言模型对消防工程知多少?

在过去2年的时间里&#xff0c;大语言模型受到前所未有的关注。ChatGPT的出现更是让人工智能对话风靡一时。我们不再把搜索引擎当作求解问题的唯一途径&#xff0c;AI聊天成为了当前最受欢迎的问题求助工具。 让ChatGPT用通俗的语言解释什么是ChatGPT 什么是大语言模型&#x…

SD微调 dreambooth Lora controlNet 持续更新中

微调&#xff1a;步骤 1 选择预训练模型 如ResNet VGG 2 准备新的数据集 3 构建模型 4 冻结部分模型 5 定义损失函数和优化器 6 微调模型 7 评估模型 8 微调的策略 https://www.zhangzhenhu.com/aigc/dreamBooth.html dreambooth (fix the object, then generate the same obje…