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

每日十题八股-2025年1月4日

1.Redis的缓存失效会不会立即删除?
2.那为什么不过期立即删除?
3.Redis主从同步中的增量和完全同步怎么实现?
4.redis主从和集群可以保证数据一致性吗 ?
5.哨兵机制原理是什么?
6.哨兵机制的选主节点的算法介绍一下
7.Redis集群的模式了解吗 优缺点了解吗?
8.为什么使用redis?
9.为什么redis比mysql要快?
10.本地缓存和Redis缓存的区别?
11.高并发场景,Redis单节点+MySQL单节点能有多大的并发量?

1.Redis的缓存失效会不会立即删除?

不会。因为采取惰性删除+定期删除。
惰性删除:要这个数据之前判断是否过期,如果过期就删除。
定期删除:随机抽取20个key,判断是否过期,如果过期就删除,超过5个key过期,继续抽取检测。

2.那为什么不过期立即删除?

消耗cpu资源。特别是内存不紧张,cpu紧张的情况下,要浪费cpu资源删除过期key,显然会对响应请求造成一定的影响,特别在这个时候出现了大量的key过期。

3.Redis主从同步中的增量和完全同步怎么实现?

replicaof masterIp masterport

这些是集群模式下主从服务器进行数据同步时进行的操作。
完全同步依靠的是RDB(快照)进行。会在从服务器首次连接主服务器时,从服务器宕机,主服务器与从服务器长时间为同步时,执行完全同步。

完全同步发生在首次建立连接时:
在这里插入图片描述

增量同步允许从服务器从断点处继续同步,而不是每次都进行完全同步。它基于PSYNC命令,使用了运行ID(run ID)和复制偏移量(offset)的概念。
在这里插入图片描述

4.redis主从和集群可以保证数据一致性吗 ?

Redis 主从和集群优先保证服务的高可用性和分区容忍性,但在网络分区时会牺牲一致性,可能导致主从节点或分片之间的数据不一致。尽管 Redis 可以通过同步机制尝试实现最终一致性,但它更适合那些 对性能和可用性要求高,但对数据一致性容忍度较高的场景。如果一致性要求高,则需要额外设计补充机制来弥补 Redis 的不足。
在这里插入图片描述

5.哨兵机制原理是什么?

在 Redis 的主从架构中,由于主从模式是读写分离的,如果主节点(master)挂了,那么将没有主节点来服务客户端的写操作请求,也没有主节点给从节点(slave)进行数据同步了。
如果是人工选择从节点成为主节点,然后通知客户端修改节点ip信息等太不智能了。
因此提出了哨兵(sentinel)机制。哨兵负责监控主从节点,选择主节点,通知相关客户端。
哨兵其实是一个运行在特殊模式下的 Redis 进程,所以它也是一个节点。
要明确sentinel,即哨兵可能不止一个,也会成为集群,共同监控。参与客观下线的投票。

6.哨兵机制的选主节点的算法介绍一下

要明确sentinel,即哨兵可能不止一个,也会成为集群,共同监控。参与客观下线的投票。
在这里插入图片描述
第3步是sentinel集群中选择哨兵leader,选举过程是
在这里插入图片描述
第4步是该leader结合所有存活从节点的优先级等等,选择出从节点作为新的主节点。
在这里插入图片描述

7.Redis集群的模式了解吗 优缺点了解吗?

Redis 集群是一种分布式部署模式,用于解决单机 Redis 在容量和性能上的瓶颈问题。它通过 分片存储 把数据分布到多个节点上,并且采用无中心架构,每个节点既维护自身数据,也通过 Gossip 协议了解整个集群的状态。
优点方面,第一,它支持数据的水平扩展,节点可以动态增加或减少,适合大规模场景。第二,高可用性,通过主从复制机制,主节点故障时从节点可以自动接管,保证服务不中断。第三,分布式架构能并行处理请求,大幅提升性能。
但它也有一些 缺点。第一,Redis 集群优先保证高可用性,可能在网络分区或故障时出现数据不一致的问题。第二,**客户端需要支持集群模式并能根据哈希槽找到对应节点,这增加了一定复杂性。**第三,集群运维管理,比如扩容、缩容和迁移,比较复杂。此外,像事务、多键操作等功能,在集群模式下有所限制。

总的来说,Redis 集群适用于高并发、大数据量场景,比如缓存、排行榜等,但在一致性要求较高的场景下,需要谨慎使用,或者结合其他补充机制。

8.为什么使用redis?

Redis 是一个高性能的内存数据库,因速度快、功能强大而广泛使用。它的 读写速度极快,延迟通常在微秒级,非常适合高并发场景。同时,Redis 支持丰富的数据结构,比如字符串、列表、集合和哈希,可以满足多种业务需求。此外,Redis 提供了强大的功能,包括持久化、发布订阅、分布式锁和高可用架构(如主从模式和集群模式),能够在保证性能的同时提供扩展性和可靠性。它常被用作缓存、计数器、实时排行榜、会话管理和消息队列,是现代互联网系统中的核心组件。

Redis 具备 「高性能」和「高并发」 两种特性。
基于内存作为数据的存取操作,响应速度快。
单台设备的 Redis 的 10w QPS(Query Per Second,每秒钟处理完请求的次数) 是 MySQL 的 10 倍。

9.为什么redis比mysql要快?

内存存储,简单的数据结构(比关系型数据库的表,哈希表等查询速度快),线程模型(主要任务的执行是单线程的,避免了线程切换的消耗和死锁的发生。)

10.本地缓存和Redis缓存的区别?

主要是本地缓存和分布式缓存的区别。
本地缓存是指将数据存储在本地应用程序或服务器上,通常用于加速数据访问和提高响应速度。本地缓存通常使用内存作为存储介质,利用内存的高速读写特性来提高数据访问速度。
分布式缓存(Redis)是指将数据存储在多个分布式节点上,通过协同工作来提供高性能的数据访问服务。分布式缓存通常使用集群方式进行部署,利用多台服务器来分担数据存储和访问的压力。
在这里插入图片描述

11.高并发场景,Redis单节点+MySQL单节点能有多大的并发量?

在这里插入图片描述


http://www.kler.cn/a/467207.html

相关文章:

  • 第 31 章 - 源码篇 - Elasticsearch 写入流程深入分析
  • 【学习总结|DAY027】JAVA操作数据库
  • Flume拦截器的实现
  • 笔记本电脑扩展的显示器如何左右或上下分屏显示?
  • springboot使用hutool captcha +vue实现图形验证码
  • 智能新纪元:代理AI的崛起与未来
  • ArcGIS JSAPI 高级教程 - 通过RenderNode实现视频融合效果(不借助三方工具)
  • 【GeekBand】C++设计模式笔记24_Visitor_访问器
  • 爬虫案例-爬取某度文档
  • 洛谷B4071 [GESP202412 五级] 武器强化
  • Java 数据库连接 - Sqlite
  • 解决openpyxl操纵带公式的excel或者csv之后,pandas无法读取数值的问题
  • 基于PHP+MySQL实现的web端借还书系统
  • android studio老版本下载教程
  • 【AI学习】Transformer深入学习(二):从MHA、MQA、GQA到MLA
  • 阿里云-通义灵码:在 PyCharm 中的强大助力(下)
  • 急需升级,D-Link 路由器漏洞被僵尸网络广泛用于 DDoS 攻击
  • GPIO、RCC库函数
  • 104周六复盘 (188)UI
  • perl包安装的CPAN大坑