【百面成神】Redis基础11问,你能坚持到第几问

这篇具有很好参考价值的文章主要介绍了【百面成神】Redis基础11问,你能坚持到第几问。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【百面成神】Redis基础11问,你能坚持到第几问

前 言
🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端
☕专栏简介:纯手打总结面试题,自用备用
🌰 文章简介:Redis最基础、重要的11道面试题

1.redis的五种数据类型及其使用场景

哈希(hash,键值对形式)
链表(list,元素有序可以重复)
集合(set,元素无序且不可重复,可以进行交、并、差运算)
有序集合(zset,元素有序的集合)
字符串(String,可以存储字符串、数字、二进制数等)

2.Redis在项目中是如何应用的

用它进行排序、排名、点赞数统计等

3.缓存穿透、缓存击穿、缓存雪崩的区别和解决场景

一般我们获取数据,会先访问缓存,如果缓存中存在则直接返回。如果缓存不存在则从数据库中获取,如果数据库中存在,会将获取的数据放入缓存、返回。如果数据库中也获取不到数据,就会直接返回失败。

在一些场景,如用户伪造不存在的数据进行查询,就需要每次都访问数据库。这时,缓存就不起作用了,因此我们称这种情况为缓存穿透。如果穿透了缓存,服务器请求数非常大,数据库可能因为扛不住压力挂掉。可以使用布隆过滤器(其底层是使用哈希算法的map缓存已经存在的数据)解决,但是可能因为哈希冲突导致误判,也可能存在数据更新问题。另外一种解决思路是缓存控制,即使某个用户id(key)的数据在数据库中找不到,也可以把id缓存到redis缓存中,这样该用户获取数据时就不会有缓存穿透问题。

在诸如秒杀活动的场景,同一时刻大量请求访问服务器,而此时缓存失效了,就会导致缓存击穿。缓存击穿的原因是同一时刻的访问量过大,因此可以通过加锁方式解决。也可以从缓存失效的角度出发,可以进行自动续期,防止缓存失效。

缓存雪崩是缓存击穿的plus版本,多个热门key都失效了。问题很严重,我们称为缓存雪崩。可以通过设置过期时间加随机数避免缓存在同一时间失效。另一个角度是从架构角度设计高可用的架构,比如如果使用的是redis做为缓存,可以使用哨兵模式(主机挂掉自动选举新主机)或者集群模式。也可以设置服务降级方案(如直接在配置中读默认数据)进行兜底。

区别:缓存穿透没数据、缓存击穿在缓存中没有数据,缓存雪崩是plus版本的缓存击穿

4.主从机制

将master上的数据及时有效的复制到slave上。一个master对应多个slave,但是一个slave只对应一个master。

主从复制的步骤是:建立连接、数据同步、命令传播(解决主机状态在同步过程中发生改变,主从状态不一致问题)。

在命令传播阶段,二者采用心跳机制保持连接确认。

主从复制可能出现的问题:
频繁的全量复制:因为主从复制过程中主机重启导致,可以记住主机runid解决。
从机数据不一致:可能是因为网络延迟导致,可以将主从部署在同一机房环境。

主从复制的好处有:(负载性能、数据安全、服务安全三个方面)
读写分离(主结点写,从结点读),提高负载能力。
数据冗余备份。
故障恢复(主机当掉有从机顶)
负载均衡
高可用的基石

4.Redis的性能为什么很好

Redis是纯内存的数据库,使用非阻塞式IO,全程使用hash数据结构,读取数据速度很快。

6.Redis的持久化机制

RDB:使用单独的线程进行数据IO,主线程不进行任何的IO,这种方式可以保证性能,但是可能会有数据丢失的情况
AOF:将数据持久化到特定的日志文件中,定时为1s持久化一次。其效率比RDB低。但是其安全性较高。
建议两者同时使用。如果可以容忍数分钟的数据丢失,可以使用RDB方式。

7.Redis为什么是单线程的?

程序清晰简单,不用考虑线程安全问题,但是可能会浪费多核cpu资源,可以同时开启多个redis服务器解决。

8.什么是哨兵机制

哨兵(集群:防止把网络的问题误判为主机的问题)用于监视主机的状态变化(发ping消息),当主机当掉,可以进行主从服务器的切换(由集群的leader执行),并通过「发布者/订阅者机制」通知给客户端,保证系统的高可用。

9.redis的集群

在特定场景下,如写并发,海量数据的存储压力,需要使用redis集群。Redis的集群采用分布式存储,每台服务器上存储不同的数据内容。其数据分布的策略是使用哈希槽来分配数据,默认一个cluster分配16384个槽,数据存储位置就是哈希值%16384。

10.一致性哈希

在海量数据的情形下,可能需要扩充服务器。常规的哈希算法需要重新计算所以服务实例的哈希值。一致性hash的出现解决了这种问题。将服务器结点构成一个环,每个结点分配一个token。在查找时先根据key计算哈希值,然后顺时针找到第一个大于等于该哈希值的token结点。这样删除、插入新结点只影响相邻的两个结点,缺点是插入、删除结点可能导致数据命中问题。

11.知道大key问题吗?

所谓大key问题,就是key对应的value值较大。如某个热门课程的收藏用户可能是一个很庞大的list。因为redis的主线程是单线程机制,因此大key问题会导致线程阻塞,并发量下降,客户端超时等。产生大key的原因可能有:一直往value里塞数据,但没有删除机制;没有做数据分片,将大key转换为小key。

可以使用big-keys命令或可视化工具找到大key。

解决大key问题可以通过:对于可删除的情况,删除非热点大key;压缩(string)和拆分key(list和set)。文章来源地址https://www.toymoban.com/news/detail-408535.html

到了这里,关于【百面成神】Redis基础11问,你能坚持到第几问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关键信息基础设施安全保护应坚持的八个原则

    关键信息基础设施在规划设计、开发建设、运行维护、退役废弃等阶段应加强安全保护。关键信息基础设施运营者应按照《关键信息基础设施安全保护要求》等国家标准的要求,在落实网络安全等级保护制度要求和国家标准的基础上,从关键信息基础设施分析识别、安全防护

    2024年01月17日
    浏览(59)
  • 【C++】如果你准备学习C++,并且有C语言的基础,我希望你能简单的过一遍知识点。

    相关视频——黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili(1-83) 我的小站——半生瓜のblog 我知道这个视频早已经被很多人学习并且记录笔记,但是我还是想再过一遍前面的基础知识点,所以我这个笔记会非常的简洁,适合有C语言基础的小伙

    2024年02月01日
    浏览(47)
  • 【Java基础教程】(二)入门介绍篇 · 下:从JDK下载安装到第一个“Hello World!”程序,解析PATH和CLASSPATH环境变量的妙用~

    JDK 安装与配置; 理解环境变量PATH和CLASSPATH的主要作用; 运行第一个Java程序。 要进行Java的程序开发,必须先有Java开发工具包( JavaDevelopmentKit,JDK )的支持。本节主要基于JDK1.8版本来介绍安装等知识,读者朋友可以直接登录 Oracle官网 去进行下载,也可以在下边链接(包含

    2024年02月13日
    浏览(56)
  • 机器学习中高维组合特征的处理方法+推荐系统使用矩阵分解为用户推荐的原理解析,《百面机器学习》学习笔记

    为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征进行组合,构成高阶组合特征。 假设有A B两组特征,C为受到A B两种特征影响的因素,且对特征A来说,其有 A i , i ∈ [ 0 , 1 ] {A^i,iin [0,1]} A i , i ∈ [ 0 , 1 ] 两种特征取值。同时,对于特征B来说,其有 B j , j ∈

    2024年02月05日
    浏览(45)
  • 前端成神之路-CSS(选择器、背景、特性)

    目录 前端成神之路-CSS(选择器、背景、特性) CSS 第二天 1. CSS复合选择器 1.1 后代选择器(重点) 1.2 子元素选择器 1.3 交集选择器 1.4 并集选择器(重点) 测试题 1.5 链接伪类选择器(重点) 1.6 复合选择器总结 2. 标签显示模式(display)重点 2.1 什么是标签显示模式 2.2 块级

    2024年02月08日
    浏览(42)
  • 【Flink 从入门到成神系列 一】算子

    👏作者简介:大家好,我是爱敲代码的小黄,阿里巴巴淘天Java开发工程师,CSDN博客专家 📕系列专栏:Spring源码、Netty源码、Kafka源码、JUC源码、dubbo源码系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 🍂博主正在努力完成2023计划中:以梦为马,扬帆

    2024年02月03日
    浏览(35)
  • 大数据HCIE成神之路之数学(2)——线性代数

    1.1.1 线性代数介绍 线性代数是一门被广泛运用于各工程技术领域的学科。用线性代数的相关概念和结论,可以极大地简化数据挖掘中相关公式的推导和表述。线性代数将复杂的问题简单化,让我们能够对问题进行高效地数学运算。 线性代数是一个数学工具,它不仅提供了有

    2024年02月04日
    浏览(38)
  • 大数据HCIE成神之路之数据预处理(6)——特征编码

    提问:什么是独热编码? 回答:独热编码是一种常用的数据编码方法,用于将分类变量转换为 二进制 的表示形式。它将每个类别表示为一个只包含 0和1 的二进制向量,其中每个类别对应一个维度,维度上的值为1表示该 样本属于该类别 ,为0表示 不属于该类别 。 对于离散

    2024年02月03日
    浏览(34)
  • 云原生之旅第一课(2站搜索K8s成神之路)

    自己动手搭建Kubernetes集群,学习如何自定义CRD,以及使用Kubebuilder快速搭建Operator项目,云原生之旅第一课。从一开始准备录制课程,到如今已经有了500位忠实粉丝,我感到无比欣慰。这门课程完全开源,每一集都是对比官网1比1,确保原汁原味。如果你也对云原生技术充满好

    2024年04月12日
    浏览(47)
  • 【Spring从成神到升仙系列 四】从源码分析 Spring 事务的来龙去脉

    👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主 📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙、Spring从成神到升仙系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一

    2024年02月03日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包