Redis面试题8

news/2024/7/24 5:27:45 标签: redis, 数据库, 缓存

在 Redis 中实现发布/订阅功能很简单,可以通过以下步骤来实现:
使用 PUBLISH 命令向指定的频道发送消息;
使用 SUBSCRIBE 命令订阅指定的频道,从而接收到该频道上的消息;
可以使用 PSUBSCRIBE 命令进行模式订阅,订阅符合给定模式的频道上的消息;
Redis 也提供了 UNPUBLISH 和 UNSUBSCRIBE 命令来取消发布和订阅;
可以通过使用多个客户端来实现不同的发布者和订阅者之间的消息传递。
Redis 的主从复制是如何工作的?
Redis 的主从复制是一种常用的数据复制方式,可以将主节点上的数据复制到一个或多个从节点上,以提高数据的可用性和可靠性;
主从复制的工作过程如下:
从节点向主节点发送 SYNC 命令,请求全量复制;
主节点收到 SYNC 命令后,生成并发送 RDB 快照文件给从节点;
从节点接收到 RDB 快照文件后,加载并更新自己的数据集,然后向主节点发送 PSYNC(Partial SYNC)命令,请求增量复制;
主节点接收到 PSYNC 命令后,记录从节点的偏移量,并将新的写命令发送给从节点;
从节点根据记录的偏移量和主节点进行命令对比和同步,保证数据的一致性,并定期向主节点发送心跳检测;
当主节点故障时,从节点会自动选举一个新的主节点,从而实现主节点的故障转移。
Redis 如何处理过期键(expired keys)?
Redis 使用一种称为惰性删除(lazy deletion)的方式处理过期键;
当客户端访问一个过期键时,Redis 会立即将该键删除,并返回空结果;
Redis 不会在键过期时立即删除它,而是在访问时检查键是否过期,并在需要时删除;
为了避免因为键过期集中删除而阻塞服务器,Redis 通过将过期键分散到不同的时间点上来进行分摊删除负载;
Redis 使用定时器和惰性删除的方式来处理过期键,保证了高效和低延迟的处理方式,但也会带来一些额外的内存开销。
Redis 中的缓存雪崩是什么?如何预防和处理缓存雪崩问题?
缓存雪崩是指在某个时间点,缓存中大量的键同时过期或失效,导致所有的请求都落到了数据库上,从而造成数据库负载过大,甚至引发服务故障的现象;
预防和处理缓存雪崩问题的方法包括:
缓存的键设置随机的过期时间,避免大量键在同一时间点过期;
使用分布式锁来保证只有一个请求能够更新缓存,其他请求需要等待或绕过缓存直接访问数据库
设置缓存的自动续期机制,确保缓存的持续有效,避免大量键同时失效;
使用多级缓存架构,例如将热点数据缓存在本地内存中,将冷数据缓存在分布式缓存系统中,以减轻数据库的负载;
监控缓存的命中率和过期情况,及时发现异常,并采取相应的措施进行处理;
在高峰期限制并发请求的数量,避免对缓存数据库造成过大的压力。
Redis 的哨兵模式是什么?它的作用是什么?
Redis 的哨兵模式是一种高可用性的解决方案,用于监控和管理 Redis 实例的故障和故障转移;
哨兵模式通过使用哨兵进程,实时监控 Redis 主节点和从节点的状态,并在主节点故障时自动将其中一个从节点升级为新的主节点,以保证系统的可用性;
哨兵模式的作用包括:
监控 Redis 实例的状态,检测主节点和从节点的故障;
自动完成主节点的故障转移,将一个从节点晋升为新的主节点;
在主节点故障恢复后,将其重新加入到集群中并担任从节点的角色;
提供对外的主节点地址,屏蔽底层实例的变化,方便客户端的连接和操作。
Redis 的集群模式是什么?它的特点是什么?
Redis 的集群模式是一种分布式的解决方案,用于构建具有高可用性和可伸缩性的 Redis 系统;
Redis 集群通过将数据分片存储在多个节点上,并通过节点间的数据交互来完成读写操作,从而提供更高的性能和容错能力;
Redis 集群模式的特点包括:
自动分片:Redis 集群可以自动将数据分散到多个节点上,实现数据的水平分片存储;
数据复制:每个节点都可以有多个从节点,用于实现数据的备份和高可用性;
主节点选举:集群中的每个节点都可以成为主节点,并通过选举机制来选出新的主节点;
客户端分片:客户端可以根据键的哈希值来选择对应的节点,以实现数据的均衡访问;
自动故障转移:集群可以自动识别节点的故障,并进行主从切换和数据迁移,实现故障恢复和动态伸缩等


http://www.niftyadmin.cn/n/5317168.html

相关文章

Web实战丨基于django+html+css+js的电子商务网站

文章目录 写在前面实验目标需求分析实验内容安装依赖库1.登陆界面2.注册界面3.电子商城界面4.其他界面 运行结果写在后面 写在前面 本期内容:基于DjangoHTMLCSSJS的电子商务网站 实验环境: vscode或pycharmpython(3.11.4)django 代码下载地址&#x…

车速预测 | Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 车速预测 | Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图) 程序设计 完整程序和数据获取方式:私信博主回复Matlab基于RBF径向基神经网络的车速预测模型…

C++day3作业

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&#xf…

机器学习周刊 第4期:动手实战人工智能、计算机科学热门论文、免费的基于ChatGPT API的安卓端语音助手、每日数学、检索增强 (RAG) 生成技术综述

LLM开发者必读论文:检索增强(RAG)生成技术综述! 目录: 1、动手实战人工智能 Hands-on Al2、huggingface的NLP、深度强化学习、语音课3、Awesome Jupyter4、计算机科学热门论文5、LLM开发者必读论文:检索增强 (RAG) 生…

工智能基础知识总结--词嵌入之Word2Vec

词嵌入要解决什么问题 在自然语言系统中,词被看作最为基本的单元,如何将词进行向量化表示是一个很基本的问题,词嵌入(word embedding)就是把词映射为低维实数域向量的技术。 下面先介绍几种词的离散表示技术,然后总结其缺点,最后介绍词的分布式表示及其代表技术(word2v…

详解java中ArrayList

目录 前言 一、ArrayList是什么 二、ArrayList使用 1、ArrayList的构造 2 、ArrayList常见操作 3、 ArrayList的遍历 4、 ArrayList的扩容机制 三、来个练习 前言 当你看到这篇文章我觉得很好笑,因为我开始也不懂ArrayList现在轮到你了,嘻嘻嘻&am…

QTAV的编译、使用及遇到的问题

最近有个功能需求,界面可以直播显示某个特定摄像头的实时画面,通过对Qt本身的 QMiediaPlayer,和其他一些在网上找到的组件做了一些对比,最终选择了QtAv作为我们的组件使用。 QtAV 是一个基于 Qt 和 FFmpeg 的跨平台、高性能多媒体播放框架。…

Win系统搭建Elasticsearch实现公网远程访问本地服务

文章目录 系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎,它提供了一个分布式、多…