Redis面试题整理

news2024/11/28 19:25:49

认识Redis

什么是Redis?

  • 一种基于内存的数据库;
  • 在内存中完成对数据的读写操作;
  • 读写速度非常快;
  • 常用于缓存,消息队列,分布式锁等场景

Redis和Memcached有什么区别?

  • 共同点
    • 都是基于内存的数据库,一般都用来当做缓存使用;
    • 都有过期策略;
    • 性能都非常高
  • 区别
    • Redis支持的数据类型更丰富(String、Hash、List、Set、ZSet),而Memcached只支持最简单的key-value数据类型;
    • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用,而Memcached没有持久化功能,数据全部存在内存之中,Memcached重启或者挂掉后,数据就没了;
    • Redis原生支持集群模式,Memcached没有原生的集群模式,需要依赖客户端来实现往集群中分片写入数据;
    • Redis支持发布订阅模型,Memcached没有原生的集群模式,需要依赖客户端来实现往集群中分片写入数据

为什么用Redis作为MySQL的缓存?

  1. 高性能
    在这里插入图片描述
    操作Redis缓存就是直接操作内存,所以速度相当快
  2. 高并发
    单台设备的Redis的QPS(Query Per Second,每秒钟处理完请求的次数)是MySQL的10倍,Redis单机的QPS能轻松破10w,而MySQL单机的QPS很难破1w。

直接访问Redis能够承受的请求是远远大于直接访问MySQL的

Redis数据结构

五种常见的Redis数据类型是怎么实现的?

在这里插入图片描述

String类型

主要实现是 SDS (简单动态字符串)。SDS和我们认识的C字符串不太一样,之所以没有使用C语言的字符串表示,因为SDS相比于C的原生字符串:

  • SDS不仅可以保存文本数据,还可以保存图片、视频二进制数据;
  • SDS获取字符串长度的时间复杂度是O(1)。因为C语言的字符串并不记录自身长度;
  • Redis的SDS API是安全的,拼接字符串不会造成缓冲区溢出。

List类型

主要由双向链表或压缩列表实现:

  • 如果列表的元素个数小于512个,列表每个元素的值都小于64字节,Redis会使用压缩列表作为List类型的底层数据结构;
  • 如果列表的元素不满足上面的条件,Redis会使用双向链表作为List类型的底层数据结构。

但是在Redis3.2版本之后,List数据类型底层数据结构就只由quicklist实现了,代替了双向链表和压缩列表

Hash类型

主要由压缩列表或哈希表实现:

  • 如果哈希类型元素小于512个,所有值小于64字节的话,Redis会使用压缩列表作为Hash类型的底层数据结构;
  • 如果哈希类型元素不满足上面条件,Redis会使用哈希表作为Hash类型的底层数据结构

但是在Redis7.0中,压缩列表数据结构已经废弃了,交由listpack数据结构来实现了

Set类型内部实现

Set类型的底层数据结构是由哈希表或整数集合实现的:

  • 集合中的元素都是整数且个数小于512,Redis会使用整数集合作为Set类型的底层数据结构;
  • 集合中的元素不满足上面条件,则Redis使用哈希表作为Set类型的底层数据结构;

ZSet类型内部实现

Zset类型的底层数据结构是由压缩列表或跳表实现的:

  • 如果有序集合的元素个数小于128个,并且每个元素的值小于64字节,使用压缩列表;
  • 否则,使用跳表。

在Redis7.0中,压缩列表数据结构已经废弃了,交由listpack数据结构来实现了。

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

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

相关文章

PaddleNLP系列课程二:RocketQA、SKEP(属性级情感分析)、通用信息抽取技术UIE

文章目录一、使用RocketQA搭建端到端的问答系统1.1 问答系统介绍1.2 RocketQA1.2.1 检索式QA VS预训练时代QA1.2.2 RocketQA简介1.3 使用RocketQA搭建问答系统1.3.1 安装1.3.2 使用预置模型完成预测1.3.3 搭建问答系统1.3.3.1 使用Faiss搭建自己的问答系统1.3.3.2 使用Jina搭建…

Leecode---141、142环形链表

141 难度 : easy 个人主要思路是, 循环遍历每个节点, 判断该节点此前是否被访问过。 方法一: 时间8ms , 内存 6.8M , func hasCycle(head *ListNode) bool {var val map[*ListNode]*ListNode{}if head nil {return …

l2逐笔接口数据传输延时高吗?

l2逐笔接口数据传输延时高吗?信息服务商的机器部署在交易所机房内,并通过接口直接向用户转发。按照交易所的规定,每个接收用户均需支付成本十几万,使用l2逐笔接口数据做量化是需要一定门槛。但用户端SDK直连的方式,能最…

C++学习 Day.9(宏和模板简介)

好久没更了,摆还是爽 遗留问题: (16条消息) int&作为函数返回类型-编程语言-CSDN问答(已解决) 宏: 预处理器编译指令都以#打头 #define(宏常量)使得预处理器进行文本替换,而不…

Acwing---795.前缀和

前缀和1.题目2.基本思想3.代码实现4.总结1.题目 输入一个长度为n的整数序列。 接下来再输入m个询问,每个询问输入一对l,r。 对于每个询问,输出原序列中从第l个数到第 r 个数的和。 输入格式 第一行包含两个整数n和m。 第二行包含n个整数&am…

一种简洁又不失优雅的工作流:极狐 flow

本文来自: 万金 极狐(GitLab)解决方案专家 杨周 极狐(GitLab) 高级解决方案架构师 极狐(GitLab) 市场部内容团队 我们提到的 Workflow 是指什么? 我们在日常开发工作中提到的 Workflow 通常是指通过 Git(版本控制工具)实现的分布式…

JavaSE学习day1_03, Java的发展

5. Java语言的扩展知识,重点 5.1 Java语言的发展 java语言前身是oka语言. JDK5:第一个大版本号更新 JDK8:企业中最常用的版本 JDK17:课程中学习的版本 特点:兼容性。 用jdk8编写的代码,用17可以运行 用jdk17编写…

定位bug

1、bug定位常用工具   Firefox——firebug、web developer、 live http headers、http fox IE插件——httpwatch 第三方工具——fiddler 慢速网模拟工具——firefox throttle 1.该选择框使用来选择资源的,当网页被加载的时候向服务器端请求出来的文件包括.htm…

二维码识别率优化实践

本文字数:5939字预计阅读时间:15 分钟概述长按图片识别二维码在移动端是很常见的操作,长按后需要对图片进行识别,并且将二维码中所包含的数据解码出来。在我们的业务场景中,是通过点击图片进入大图预览页面。长按大图预…

项目管理工具dhtmlxGantt甘特图入门教程(六):dhtmlxGantt的扩展完整列表

dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理控件应用程序的所有需求,是最完善的甘特图图表库。 这篇文章给大家讲解dhtmlxGantt的扩展完整列表。 DhtmlxGantt正版试用下载(qun:764148812&…

【NI Multisim 14.0原理图环境设置——电路总体设计流程】

目录 序言 🍊知识点 一、电路板总体设计流程 🍉 1.创建电路文件 🍉2.规划电路界面 🍉3.放置元器件 🍉4.连接线路和放置节点 🍉5.连接仪器仪表 🍉6. 运行仿真并检查错误 🍉7…

Dropzone4 for MAC 文件拖拽增强工具

前言 ​​Dropzone for mac是一款文件拖拽操作增强工具,可以让我们把大部分工作都通过拖拽来完成,只需将文件拖拽到菜单栏上的窗口即可。比如保存文本、发送邮件、FTP上传、打开应用等等。提高了用户的工作效率。 下载 Dropzone4 特征 -打开应用程序…

连接格式优化,支持自定义

12月, eKuiper 团队继续专注于 1.8.0 版本新功能的开发。我们重构了外部连接(source/sink) 的格式机制,更加清晰地分离了连接、格式和 Schema,同时支持了格式的自定义;受益于新的格式机制,我们大幅完善了文…

echarts中formatter修改鼠标悬浮事件信息操作、echarts地图块、散点区分触发点击事件 只触发散点问题详解

这里写目录标题1、实例2、案例详解1、实例 这次我拿echarts中 地图组合散点图的实例 !!!实现效果:滑到散点显示不同于地图块的信息 及 formatter 提示窗自定义!!! 这个显示项目名称为"文昌…

千锋教育+计算机四级网络-计算机网络学习-01

目录 课程链接 最早的广域网 计算机网络发展阶段 计算机网络的定义与要点 英文单词网络术语与解释 计算机网络分类 广域网技术 城域网 局域网 个人局域网 五种基本的网络拓扑结构​ 误码率 电路交换网特点 分组交换 交换方式 TCP/IP协议族 IP协议介绍 TCP协议介绍 …

OpenCV的solvePnP函数和Dlib估计头部姿势

一、姿势估计概述1、概述在许多应用中,我们需要知道头部是如何相对于相机倾斜的。例如,在虚拟现实应用程序中,可以使用头部的姿势来渲染场景的右视图。在驾驶员辅助系统中,在车辆中观察驾驶员面部的摄像头可以使用头部姿势估计来查…

React(coderwhy)- 06(RTK)

认识ReduxToolkit 认识Redux Toolkit ◼ Redux Toolkit 是官方推荐的编写 Redux 逻辑的方法。  在前面我们学习Redux的时候应该已经发现,redux的编写逻辑过于的繁琐和麻烦。  并且代码通常分拆在多个文件中(虽然也可以放到一个文件管理,…

[RoarCTF 2019]Online Proxy(x-forwarded-for盲注)

这道题点开题目 然后题目显示不出网,一开始误认为是ssrf了,但是没有更多的信息了。 源码有一个ip会不会是修改X-Forwarded-For就可以了呢,抓包试一下, 发现有两个ip,一个当前一个是last上一个的意思把,…

数字图像处理实验——图像增强

一、实验目的与要求1.掌握图像空域点处理增强方法,包括图像求反,线性灰度变换,以及直方图均衡化方法;2.熟练掌握空域滤波增强方法,包括平滑滤波器及锐化滤波器。二、实验内容及步骤1.图像的求反、线性灰度变换、直方图…

【回答问题】ChatGPT上线了!比较流行的监督学习模型

监督学习模型是指在训练过程中,使用带有正确答案的标记数据来进行学习。常见的监督学习模型包括逻辑回归、决策树、支持向量机、朴素贝叶斯分类器、神经网络等。最近流行的监督学习模型还包括深度学习模型,如卷积神经网络和循环神经网络。 下面给出一些…