当前位置: 首页 > news >正文

Redis常见面试

1.redis是什么,优缺点,数据类型

redis是c语言编写的开源高性能非关系型键值对。数据存储在内存中,读写速度非常快,广泛用于缓存方向。
键只能是字符串对象,值可以是字符串对象、哈希对象、列表对象、集合对象、有序集合对象。
最大的优点就是读写速度快,支持数据持久化,有AOF和RDB两种方式;数据结构丰富;支持主从复制;支持事务,所有操作具有原子性。
缺点是容量受物理容器影响;较难支持在线扩容;框架本身不具备自动容错和恢复,需要手动干预。

2.为什么使用缓存,使用redis。

高性能:操作缓存直接操作内存,速度很快,不需要经过查找磁盘数据的I/O开销。
高并发:直接操作缓存能接受的请求量远大于直接访问数据库,因此经常热点数据可以存缓存,避免高频访问数据库。
高可用:拥有持久化、哨兵、主从复制。

3.使用场景

用作缓存:热点数据,读多写少的业务数据。一般是一些配置数据。
用作分布式锁: 底层实际使用setnx,成功设置key value 就表示获取到了锁,失败返回0 表示未获取到锁,通常加入过期时间,使服务器宕机也能释放锁。
用作简单的消息队列:利用redis的数据结构中有list对象,本质是双端链表实现,就可以让消息从左加入,从右弹出,保证消息顺序性。
和memcached区别:
(1)多线程和单线程区别,redis单线程。
(2)支持的类型区别,redis除了字符串类型,还支持列表,集合、哈希表,有序集合等对象类型。
(3)redis支持持久化,AOF、RDB都可以将内存数据保存到磁盘,重启能够进行恢复使用,memcached数据全部在内存。
(4)redis支持分布式,可以通过集群模式自动管理数据分片。后者本身不支持,只有使用客户端手动哈希,寻找配置的节点。

4.redis 为什么快

(1)纯内存操作,不需要读取磁盘,无磁盘I/O消耗,非常快速。
(2)数据结构简单、数据操作也简单。
(3)单线程,无上下文切换和竞争条件。不存在多线程切换消耗CPU,也不存在各种锁的问题,也不会出现死锁导致性能消耗。
(4)I/O多路复用模型,使用I/O多路复用让单线程也可以高效处理多个网络请求,尽量减少网络I/O消耗。

5.持久化,RDB和AOF

Redis的数据如果全部存储在内存,那么服务器一宕机,所有数据都会消失。因此指定了一套机制来保证数据不会因为故障而消失,这个机制就是持久化机制,他会在运行时,将内存数据状态保存到磁盘中。
(1)RDB持久化:数据快照,将redis在内存中的数据库状态,也就是键值对保存到磁盘中。
可以手动执行SAVE或者BGSAVE来开启RDB持久化。SAVE会阻塞主线程,BGSAVE是创建fok子线程完成持久化操作。
BGSAVE也可以被redis周期性自动调用,服务器会维护一个dirty计数器和lastsave属性,分别记录上一次rdb成功后,发生了多少次修改,以及上一次成功进行rdb持久化操作的时间戳。redis服务器周期性函数会判断这两个值是否和配置条件满足,来决定是否进行RDB持久化,这样就可以实现自动间隔性保存。
此外,主从复制、或数据库清空和关闭都会触发RDB持久化。
(2)AOF:该功能开启时,redis每次执行修改内存中数据的写操作时,都会以命令请求协议格式将此次修改追加到AOF缓冲区中,在每一次事件循环之前,会将缓冲区中所有文件写入内存中的AOF文件。至于何时同步到磁盘,主要根据参数配置有三种选择:always指每一次写入都进行同步;everysec每一秒执行一次同步;no指何时同步由操作系统决定。
重写AOF:随着服务器运行,写命令就会越来越多,AOF体积也越来越大,还原起来就越花时间,所以需要重写AOF,执行重写AOF时,系统维护一个AOF重写缓冲区,在子线程通过读取数据库状态,创建新的AOF文件期间,它会记录服务器执行的所有写命令,在子线程完成工作后,会通知主线程将重写缓冲区中的写命令追加到新建的AOF文件中,完成对新文件的改名并覆盖旧AOF文件。

RDB和AOF对比

(1)rdb数据是冷备份,文件非常紧凑,同样的数据量,RDB文件要小很多,节省磁盘空间。而AOF是热备份,文件大很多。
(2)数据恢复时,RDB速度比AOF快很多。
(3)生成RDB文件,需要遍历所有内存数据块,资源消耗大,时间长。且生成期间,服务器更新的数据不会反应到文件中,发生宕机,会损失几分钟的数据,安全性比AOF低。而AOF支持三种持久性策略,数据安全性较高。
(4)RDB文件可读性差,不能直接打开,AOF文件可读性高。

混合持久化

结合RDB和AOF优点,将RDB快照数据和AOF日志数据存放在一起,前面大部分都存储RDB快照数据,后面AOF不再是全量,而是记录RDB持久化期间,服务器的更新数据操作的增量AOF日志。

6.主从同步是什么,作用。

主从同步指的是让一个服务器去复制另一个服务器,前者称为从服务器,后者为主服务器,数据复制是单向的,只能从主服务器到从服务器。
作用:可以实现数据的热备份,是一种数据冗余,当主节点发生故障,可以使用从节点进行故障恢复。在主从同步基础上,可以配合读写分离,分担数据库负担,进行负载均衡。是redis哨兵和集群能够实施的基础,是高可用的基石。
过程:三阶段:建立连接,数据同步,命令传播。首先确认好主从服务器关系后,会进行套接字连接,连接成功后,从服务器会发送同步命令,执行完整同步时,主服务器会主动生成RDB文件和缓存区的写命令给从服务器,如果是部分同步,则只发送复制积压缓冲区的写命令给从服务器。完成数据同步后,进入命令传播阶段,主服务器一直将执行的写命令发送给从服务器,从服务器只要一直接收执行,就可以保证和主服务器的数据一致性。从服务器周期性发送命令给主服务器进行心跳检测和命令丢失预测。

7.哨兵sentinel,核心功能,功能实现原理。

http://www.jsqmd.com/news/125722/

相关文章:

  • Topit:3步解决Mac窗口遮挡难题,让你的关键内容始终置顶
  • 轻松突破RPG Maker MV加密壁垒:全方位资源解密实战指南
  • OpenCVSharp:透视变换
  • 基于Java+大数据+SSM基于Hadoop的健康饮食推荐系统(源码+LW+调试文档+讲解等)/健康饮食建议系统/健康膳食推荐平台/健康饮食指导系统/营养饮食推荐系统
  • GeoJSON.io 免费在线地理编辑器:零基础快速上手终极教程
  • 抖音无水印下载神器:3分钟学会保存高清视频的终极方法
  • LangFlow情感分析仪表盘构建教程
  • 【重磅开源】让 Claude/GitHub Copilot 秒变你的 M365 私人助理!
  • 基于Java+大数据+SSM基于Hadoop的宁波旅游推荐周边商城实现与设计(源码+LW+调试文档+讲解等)/宁波旅游攻略/宁波旅游景点/宁波周边游/宁波商城推荐/宁波购物商城/旅游推荐系统
  • GeoJSON.io 地理数据编辑工具:从零基础到精通的完整操作指南
  • vue3+el-upload+多张图片(20MB左右)+图片压缩上传到后端+可限制条数+懒加载
  • 利用Wireshark深入理解ModbusTCP报文格式说明
  • 突破屏幕限制:Topit窗口置顶工具重新定义macOS多任务体验
  • Mac窗口管理终极利器:Topit让多任务处理效率翻倍 [特殊字符]
  • 终极Mac窗口置顶指南:如何用Topit告别多任务切换烦恼
  • 嵌入式图像转换工具终极使用指南
  • 123
  • Yolov8模型,使用pt跑正常,使用yaml跑得到的P、R、mAP等值均为0的问题
  • KeilC51与MDK同时安装后的License管理建议
  • Topit窗口置顶神器:告别多任务窗口混乱的终极方案
  • ESP32开发红外遥控家电中枢:新手教程(含代码)
  • 全球成膜助剂供应商有哪些?聚焦2025年全球成膜助剂供应商TOP榜单盘点 - 品牌2026
  • 如何快速掌握image2cpp:图像转字节数组的终极指南
  • yolo项目数据集路径缓存
  • 终极效率神器:5步掌握现代自动化工具的完整指南
  • macOS窗口管理终极方案:3步打造你的专属工作空间
  • Topit窗口置顶工具:重新定义macOS多任务工作流的终极解决方案
  • 第63天(中等题 数据结构)
  • 敏捷第22讲:自动化部署——每天手工打包浪费一小时?是时候搭建自动化流水线了
  • 复杂糖脂:细胞识别与信号传导的关键介质 CAS号: 851608-39-4