面试题-Redis

Redis部分

讲一下你理解的Redis,为什么Redis很快

Redis是一种高性能的,开源的,C语言编写的非关系型数据库,可以对关系型数据库起到补充作用,同时支持持久化,可以将数据同步保存到磁盘

说Redis很快是相对于关系型数据库如mysql来说的,主要有以下因素

  • 第一,数据结构简单,所以速度快

  • 第二,直接在内存中读写数据,所以速度快

  • 第三,采用多路IO复用模型,减少网络IO的时间消耗,避免大量的无用操作,所以速度快

  • 第四,单线程避免了线程切换和上下文切换产生的消耗,所以速度快

你常用的Redis的数据存储结构有哪些,他们的使用场景分别是什么

Redis存储形式是键值对,支持value形式包括String,List,Set,ZSet,Hash。

String可以用作缓存,计数器,防攻击,验证码、登录过期等,List可以用来做队列,秒杀等,Set可以用来去重

Redis每种存储结构说 4 个命令吧

1.String

  • set key value 设置值

  • get key 取值

  • mset key value key value... 设置多个值

  • mget key key 获取多个值

  • incr key 将key中的值自增1

  • decre key 将key中的值自减1

2.List

  • lpush key value value... 从最左边设置值

  • rpush key value value... 从最右边设置值

  • lrange key start stop 查询key中指定区间的元素

  • lpop key 移出并返回key中最左边的元素

  • rpop key 移出并返回key中最右边的元素

3.Set

  • sadd key value value 添加元素

  • smembers key 返回集合key中的所有元素

  • srem key member 删除集合key中member元素

  • scard key 查询集合key中的元素数量

4.ZSet

  • zadd key score value (score value)... 添加元素

  • zcard key 查询集合key中元素数量

  • zcount key min max 返回有序集合key中score 在min和max之间的元素

  • zrange key start stop 返回有序集合key中索引在start和stop之间的元素

5.Hash

  • hset key field value 添加元素

  • hget key field 获取key集合中field键对应的值

  • hmset key field value (field value)... 添加元素并批量添加子键值对

  • hmget key field field 获取key集合中所有的子键值对

你们项目是怎么用Redis的

使用的是Springboot整合的redis,主要用来解决前后端分离后前后端会话问题,以及验证码的问题

怎么防止Redis宕机数据丢失问题

通过对Redis持久化,把内存中的数据和命令,保存一份到磁盘中做备份,当Redis发生宕机,重启服务器的时候,会从磁盘重新加载备份的数据,从而解决数据丢失问题

Redis持久化是什么?有几种方式

将内存中的数据备份到磁盘的过程,就叫作持久化

Redis持久化主要有两种方式,RDB和AOF,可以通过修改redis.conf进行配置

RDB是记录数据快照,而AOF是记录写命令的

Redis有了AOF持久化为什么还要RDB?

AOF和RDB各有所长

  • RDB是记录数据快照,它的优点是只产生一个持久化文件,体积相对较小,启动恢复速度快,备份方便,它的缺点是没办法做到数据百分百不丢失,因为它是每隔一定时间保存一次

  • AOF是记录写命令,它的优点是格式清晰,容易理解,数据更安全,采用append模式即使持久化过程中宕机,也不影响已经保存的数据,它的缺点是文件体积较大,恢复速度慢

根据实际需要来选择,通常二者可以结合来使用

Redis内存不够了怎么办?

方式一:增加物理内存

方式二:使用淘汰策略,删掉一些老旧数据

方式三:集群

你们Redis用在哪些业务上?用的什么存储结构

主要用做缓存,比如:验证码,分类缓存,数据字典缓存,权限数据缓存,登录信息缓存等。

String类型的存储结构用的比较多,并且使用了Json格式进行序列化。

淘汰策略有哪些?你们用的哪种
  • volatile-lru :从已设置过期时间的数据集中挑选最近最少使用的数据淘汰

  • volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰(常用)

  • volatile-random:从已设置过期时间的数据集中任意选择数据淘汰

  • allkeys-lru:从数据集中挑选最近最少使用的数据淘汰

  • allkeys-random:从数据集中任意选择数据淘汰

  • no-enviction:不使用淘汰(默认的)

Redis事务和Mysql事务的区别

Mysql的事务是基于日志,记录修改数据前后的状态来实现的,而Redis的事务是基于队列实现的

Mysql中的事务满足原子性:即一组操作要么同时成功,要么同时失败,

Redis中的事务不满足原子性,即一组操作中某些命令执行失败了,其他操作不会回滚

因此对于比较重要的数据,应该存放在mysql中

使用Redis如何实现消息广播

Redis是使用发布订阅来实现广播的

订阅者通过 SUBSCRIBE channel命令订阅某个频道 , 发布者通过 PUBLISH channel message向该频道发布消息,该频道的所有订阅者都可以收到消息

为什么要使用Redis做缓存

一个字,快。

缓存它指的是将数据库的数据同步到内存中,客户端获取数据直接从内存中获取。由于内存读写速度大于磁盘,而使用缓存能减少磁盘读取,大大提高查询性能。

我们一般会将经常查询的,不会经常改变的热点数据,保存到缓存中,提高响应速度

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

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

相关文章

Matlab进阶绘图第65期—带分组折线段的柱状图

带分组折线段的柱状图是在原始柱状图的基础上,在每组柱状图位置处分别添加折线段,以进行对比或添加额外信息。 由于Matlab中未收录带分组折线段的柱状图的绘制函数,因此需要大家自行设法解决。 本文使用自制的BarwithGroupedLine小工具进行…

大模型算法面试题(十四)

本系列收纳各种大模型面试题及答案。 1、微调后的模型出现能力劣化,灾难性遗忘是怎么回事 微调后的模型出现能力劣化,灾难性遗忘(Catastrophic Forgetting)是一个在机器学习领域,尤其是在深度学习和大模型应用中频繁出…

数据库(MySQL)-DQL数据查询语言

DQL(Data Query Language 数据查询语言)的用途是查询数据库数据,如select语句。其中,可以根据表的结构和关系分为单表查询和多表联查。 单表查询 单表查询:针对数据库中的一张数据表进行查询 全字段查询 语法:select 字段名 fro…

报警系统与机房动力环境监控系统的集成及报警功能实施

在当今的运维行业中,确保关键基础设施的安全与稳定运行面临着诸多挑战,如设备故障、环境异常、非法入侵等。为了有效应对这些挑战,报警系统与机房动力环境监控系统的集成变得至关重要。本文旨在为运维团队提供关于报警系统与机房动力环境监控…

使用frrouting、gns3、pim实现ipv6组播(三)

翻遍整个网络都没有找到用ipv6进行组播推流的实例。 朋友说:A true strong person never complains about the environment 那么,就由我来创造一个吧~ 此文涉及到的所有软件均为开源软件,进行深入学习与其他平台移植时十分便利。 记得点赞额…

25考研数据结构复习·6.2图的存储及基本操作

邻接矩阵 数组实现的顺序存储,空间复杂度高,不适合存储稀疏图 👩‍💻 如何求顶点的度、入度、出度? 无向图 第i个结点的度 第i行(或第i列)的非零元素个数。有向图 第i个结点的出度 第i行非零…

如何在GPU服务器上安装Stable Diffusion webUI

一、前提条件 1、硬件条件 GPU:12G,建议16G以上,还是尽量勾搭,好像现在最大32G,目前个人性价比24G有时长出售。 内存:16G以上,建议32G,也是越大越好。 硬盘:最好使用…

2024年【金属非金属矿山(地下矿山)安全管理人员】考试报名及金属非金属矿山(地下矿山)安全管理人员模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 2024年金属非金属矿山(地下矿山)安全管理人员考试报名为正在备考金属非金属矿山(地下矿山)安全管理人员操作证的学员准备的理论考试专题,每个月更新的金属非…

抖音矩阵管理系统功能说明:一站式掌握

在当下这个信息爆炸的时代,抖音作为短视频领域的佼佼者,其用户规模持续扩大,影响力日益增强。对于内容创作者和营销人员来说,如何高效管理抖音账号,实现内容的多平台分发和精准触达,成为了亟待解决的问题。…

Redis常用指令(不定期更新)

Redis常用指令(不定期更新) 查询指定前缀key的数量查看键空间事件开启键空间通知 查询指定前缀key的数量 查询【TEST前缀】的key数量 EVAL "return #redis.call(keys,TEST:*)" 0返回信息 查看键空间事件 config get notify-keyspace-even…

Navicat Charts Creator for Mac:数据可视化利器

Navicat Charts Creator for Mac是一款专为Mac用户设计的数据可视化工具,它将复杂的数据转化为直观、易懂的图表,帮助用户更好地理解和分析数据。 该软件支持连接到多种数据库,如MySQL、MariaDB、PostgreSQL等,轻松获取实时数据&…

【QGroundControl二次开发】七.QGC自定义MAVLink消息MavLink通信协议 C++应用

1. 接收解析源码分析 通过接收串口或UDP发来的的字节流buffer&#xff0c;长度lengthbuffer.size()&#xff0c;通过下列脚本解析&#xff0c;每解析出一个mavlink数据包就执行onMavLinkMessage函数 for(int i 0 ; i < length ; i){msgReceived mavlink_parse_char(MAVL…

边集数组的存储和访问的完整代码

使用到的数据结构&#xff1a; struct eage {ll u,v,w;};//存储起点&#xff0c;重点&#xff0c;边权de数据类型 eage e[N];//开数组 ll m;//一共m条边 bool vis[N];//防止死循环&#xff0c;在dfs之前判断一下有没有走过 #include <bits/stdc.h>using namespace std; …

【Python】在CentOS 7上安装Python 3.9

在CentOS 7上安装Python 3.9.6的详细指南 本文将详细介绍如何在CentOS 7系统上安装Python 3.9。通过执行以下步骤&#xff0c;你可以顺利完成安装&#xff0c;并配置相关环境变量。 1. 准备环境 首先&#xff0c;我们需要安装开发工具和一些必要的依赖项。这些工具和库将帮助…

MySQL中,除了使用LIKE进行模糊搜索外,还有其他几种方法可以执行搜索操作

在PHP和MySQL中&#xff0c;除了使用LIKE进行模糊搜索外&#xff0c;还有其他几种方法可以执行搜索操作&#xff0c;具体使用哪种方法取决于你的具体需求&#xff08;如性能、精确度、查询的复杂性等&#xff09;。以下是一些常用的搜索方法&#xff1a; REGEXP 或 RLIKE&…

VS2022下安装和配置OpenCV环境参数+QT开发环境搭建

1.工具准备 VS2022,OpenCV4.5.5版本&#xff0c;QT5.12.12 VisualStudio最新版直接官网下载&#xff0c;根据需要进行下载&#xff0c;我下载的免费社区版本。日常开发完全够用。 qt官网下载5.12版本。 OpenCVReleases - OpenCV 选择Windows版本下载并解压到本地磁盘&#xff0…

在Spring项目中使用Maven和BCrypt来实现修改密码功能

简介 在数字时代&#xff0c;信息安全的重要性不言而喻&#xff0c;尤其当涉及到个人隐私和账户安全时。每天&#xff0c;无数的用户登录各种在线服务&#xff0c;从社交媒体到银行账户&#xff0c;再到电子邮件和云存储服务。这些服务的背后&#xff0c;是复杂的系统架构&am…

【BUG】已解决:No Python at ‘C:Users…Python Python39python. exe’

No Python at ‘C:Users…Python Python39python. exe’ 目录 No Python at ‘C:Users…Python Python39python. exe’ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班…

从 Pandas 到 Polars 三十七:在 AWS Lambda 环境中使用 Polars 来处理数据

如今&#xff0c;在serverless环境中使用Polars与在本地使用Polars非常相似。因为Polars现在内置了对在eager模式和lazy模式下从云存储&#xff08;如AWS S3&#xff09;读取和写入的支持&#xff0c;我们通常可以在处理程序函数中编写标准的Polars语法。 在这个例子中&#x…

python处理excel表格数据

xlrd读取excel xlrd可以从Microsoft Excel&#xff08;tm&#xff09;电子表格文件中提取数据 xlrd库官网&#xff1a; xlrd — xlrd 2.0.1 documentation 安装&#xff1a; pip install xlrd import xlrdbook xlrd.open_workbook("myfile.xls") print("当…