常见面试题03

简介: Redis常见数据结构包括字符串、哈希、列表、集合、有序集合及地理空间索引。其持久化机制主要有AOF和RDB,常配合使用以防数据丢失。此外,Redis还涉及缓存雪崩、穿透、击穿等“三剑客”问题及其解决方案。CAP与BASE理论则探讨了分布式系统中一致性、可用性与分区容错的权衡。最后,Seata的AT模式实现分布式事务的流程也有所涉及。

说下常见的Redis数据结构吧

  1. 字符串(String):最基本的数据结构,可以存储字符串、整数或者浮点数。
  2. 哈希(Hash):类似于关联数组,可以存储多个键值对,适合存储对象的属性。
  3. 列表(List):双向链表结构,支持从两端进行元素的插入和删除,适合做队列或者栈。
  4. 集合(Set):无序且不重复的元素集合,支持集合间的交集、并集和差集等操作。
  5. 有序集合(Sorted Set):类似于集合,但每个元素都会关联一个分数,可以按照分数进行排序。
  6. 地理空间索引(Geospatial Index):用于存储地理位置信息的数据结构,支持附近位置的搜索等功能。

Redis的持久化了解吗

了解过的面试官,主要是AOF和RDB,AOF是一种存储命令的持久化方式,可以借助于rewriteaof命令进行重写压缩以提高性能,而RDB存储的是一个二进制文件,两者一般是配合使用的,避免数据丢失。

并且持久化也跟刷盘机制有关,如果是always就不会丢失数据,everysecond最多丢一秒,如果是none交给系统就可能丢的多了。

Redis的三剑客

  1. 缓存雪崩(Cache Avalanche):指在某个时间段内,大量缓存数据同时失效,导致大量请求直接访问数据库,造成数据库压力剧增,甚至引起数据库宕机。缓存雪崩通常是由于缓存数据设置了相同的过期时间,导致在同一时间大量缓存同时失效引起的。

解决方法:可以在设置缓存时,给缓存数据的过期时间增加一个随机值,避免大量缓存同时失效;另外,可以使用热点数据预加载、限流等方式来缓解缓存雪崩的影响。

  1. 缓存穿透(Cache Penetration):指恶意请求或者不存在的数据频繁访问缓存,由于缓存中不存在该数据,每次请求都会直接访问数据库,导致数据库压力增大。

解决方法:可以在缓存中对于不存在的数据设置一个空值,或者使用布隆过滤器等方式来过滤恶意请求,避免直接访问数据库。

  1. 缓存击穿(Cache Breakdown):指针对某一热点数据,由于缓存数据过期或者被删除,导致大量请求直接访问数据库,造成数据库压力增大。

解决方法:可以在缓存失效时,使用互斥锁或者分布式锁来避免大量请求同时访问数据库,同时可以提前异步加载热点数据到缓存中,避免缓存失效时直接访问数据库。

CAP和Base理论了解吗

Consistency(一致性):用户访问分布式系统中的任意节点,得到的数据必须一致。
Availability (可用性):用户访问集群中的任意健康节点必须能得到响应,而不是超时或拒绝。
Partition(分区):因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区。
Tolerance(容错):在集群出现分区时,整个系统也要持续对外提供服务

系统间的网络不能100%保证健康,一定会有故障的时候,而服务又必须对外保证服务。因此Partition Tolerance不可避免。

如果此时要保证一致性,就必须等待网络恢复,完成数据同步后,整个集群才对外提供服务,服务处于阻塞状态,不可用。

如果此时要保证可用性,就不能等待网络恢复,那node01、node02与node03之间就会出现数据不一致。

也就是说,在P一定会出现的情况下,A和C之间只能实现一个

BASE理论是对CAP的一种解决思路,包含三个思想:

  • Basically Available(基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
  • Soft State(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。
  • Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

说下Seata的AT模式执行流程吧

Seata AT模式的执行流程:

  1. 分布式事务发起方发送全局事务开始请求(Begin)给Seata Server,Seata Server为该全局事务生成一个全局事务ID(XID)。
  2. 分布式事务发起方开始执行本地事务,并在本地事务执行前向Seata发起分支事务注册请求(Branch Register),包括全局事务ID(XID)、分支事务ID(Branch ID)、分支事务参与者(即本地事务的执行者)等信息。
  3. 分布式事务发起方执行本地事务,如果本地事务执行成功,则向Seata发起分支事务提交请求(Branch Report);如果本地事务执行失败,则向Seata发起分支事务回滚请求(Branch Report)。
  4. Seata Server接收到分支事务提交或回滚请求后,会根据请求的结果来决定是否进行全局事务的提交或回滚。
  5. 如果所有分支事务都提交成功,Seata会向所有参与者发送全局事务提交请求(Global Commit);如果有任何一个分支事务回滚,Seata会向所有参与者发送全局事务回滚请求(Global Rollback)。
  6. 参与者接收到全局事务提交或回滚请求后,根据请求的指令来执行本地事务的提交或回滚操作。


目录
相关文章
|
3月前
|
消息中间件 存储 Java
常见面试题02
本内容介绍MQ的应用场景、交换机模式、消息不丢失机制、延迟消息处理及消息挤压解决方案,涵盖RabbitMQ的确认机制、持久化、消费者配置及实际项目应用。
132 1
|
3月前
|
存储 SQL 关系型数据库
常见面试题11
MySQL索引主要使用B+tree结构,具有层级少、检索快、支持范围查询等优点。InnoDB中聚簇索引将数据存于叶子节点,主键为默认索引;二级索引则存储主键值,需回表查询完整数据。创建索引需遵循最左前缀、避免类型转换、函数操作等原则,并通过explain分析执行计划,防止索引失效,提升查询效率。
74 0
|
2月前
|
数据库 微服务
常见面试题19
BASE理论提出“基本可用、软状态、最终一致性”,是分布式系统中对CAP定理的实践妥协。相比强一致的刚性事务(ACID),它属于柔性事务,强调高可用与最终一致,适用于Seata等分布式事务方案中的AT、TCC、SAGA模式,而非传统2PC的强一致性。
72 7
|
3月前
|
存储 网络协议 关系型数据库
常见面试题10
HTTP是超文本传输协议,基于TCP,规定客户端与服务器通信规则。常见请求方式有GET和POST,区别在于参数传递、安全性和用途。HTTPS通过SSL加密更安全,但耗资源。常用状态码如200成功、404未找到、500服务器错误。转发在服务端完成,重定向由浏览器发起两次请求。MySQL中char定长、varchar变长;事务具ACID特性,隔离级别解决并发问题。
105 3
|
3月前
|
缓存 搜索推荐 算法
常见面试题09
排序算法分为比较类(如快排、归并、堆排)和非比较类(如计数、桶、基数)。快排平均最快但不稳定,归并稳定且复杂度恒定,插入排序适合小规模或近有序数据。工业级常混合多种算法优化性能。
95 2
|
3月前
|
Linux 网络安全 开发工具
常见面试题01
本内容主要介绍了Docker部署及常用命令的使用,包括简单部署与集群部署的方法,以及在Linux系统中查看日志的常用命令,如cat、grep等。内容适用于面试场景,帮助候选人更好地展示自身技能。
95 0
|
存储 NoSQL Java
蚂蚁金服Java研发岗二面:redis 常见数据结构以及使用场景分析
redis简单来说 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。所以在面试中我们经常可以看到redis的身影,今天给大家带来一道redis的面试真题以及解析,后面会给大家分享今年来redis常考试的一些真题。
316 0
|
2月前
|
存储 开发工具 git
常见面试题27
Docker Compose用于定义和运行多容器应用,通过yml文件配置服务。Git本地仓库用于本地开发提交,远程仓库用于代码共享与协作。Git工作区、暂存区、版本库协同管理版本。分支管理常用master、release、develop,命名规范清晰,便于协作与追溯。
68 7
|
2月前
|
负载均衡 Java Maven
常见面试题28
Maven 是 Java 项目自动化构建工具,用于项目构建、依赖管理、生命周期管理及项目信息维护。遵循标准目录结构和“约定优于配置”原则,支持清理、编译、测试、打包、部署等操作,提升开发效率与规范性。
111 9
|
2月前
|
存储 缓存 NoSQL
常见面试题30
简介:Redis持久化包括AOF和RDB,结合使用可防数据丢失,刷盘策略影响数据安全性;三大问题为缓存雪崩、穿透、击穿,需针对性解决;CAP理论强调分区容错下一致性与可用性权衡,BASE则提供最终一致性方案;Nacos支持分级存储模型,实现配置的多维度隔离管理,并通过心跳机制保障服务健康。
82 2

热门文章

最新文章