【面试 redis】【第十二篇】redis的相关面试问题【完结】
redis的相关面试问题==完结,详情查看日记
==========================================
redis教程:http://www.redis.net.cn/tutorial/3501.html
===============================================================================
1.redis如何实现高并发
redis通过一主多从,主节点负责写,从节点负责读,读写分离,从而实现高并发。
https://www.cnblogs.com/mengchunchen/p/10044603.html
===============================================================================
2.redis如何实现高可用
主备切换,哨兵集群,主节点宕机的情况下,自动选举出一个从节点变成主节点,从而保证了redis集群的高可用。
https://www.cnblogs.com/mengchunchen/p/10044840.html
===============================================================================
3.redis是单线程还是多线程?为什么单线程还能处理速度那么快?
首先,redis是单进程单线程的k-v内存型可持久化数据库。
单线程还能处理速度很快的原因:
1》redis操作是基于内存的,内存的读写速度非常快
2》正是由于redis的单线程模式,避免了线程上下文切换的损耗
3》redis采用的IO多路复用技术,可以很好的解决多请求并发的问题。 多路代表多请求,复用代表多个请求重复使用同一个线程。epoll
IO多路复用原理图如下:
===============================================================================
4.redis的应用场景
1》key-value结构,内存存取,速度快,做缓存
2》list或sort set 实现消息队列
3》list的有序性,也可以做时间轴
4》sort set的权重特性,可以做排行榜
5》redis的原子性自增,可以实现计数器
6》redis的set,实现好友关系的功能 A关注的人存放set 被谁关注存放set,B也同样存放两个set,A的关注的人set和B的关注的人set求交集,可以得到共同关注;A的关注的人set和A的被关注的set求交集,获取互相关注好友列表。
7》分布式锁,可以设置过期时间,注意使用完成要delete掉
https://www.cnblogs.com/mengchunchen/p/9691021.html
===============================================================================
5.redis如何保证原子性,又是如何解决异步以及并发阻塞的?
redis可以保证操作的原子性,是因为redis本身就是单进程单线程的。
那既然是单进程的如何解决异步以及并发阻塞的?
是通过IO多路复用技术解决的这个问题!
===============================================================================
6.redis 缓存穿透、缓存雪崩、缓存击穿
https://baijiahao.baidu.com/s?id=1619572269435584821&wfr=spider&for=pc
https://www.cnblogs.com/duanxz/p/3788366.html
https://www.cnblogs.com/dream-to-pku/p/9153999.html
这些问题的处理核心思想,就是尽可能的减小DB的访问压力!!
缓存穿透:无效ID,在redis缓存中查不到,去查询DB,造成DB压力增大。
解决方法:
1》解决方法1:布隆过滤器,提供一个很大的Bit-Map,提供多个hash函数,分别对查询参数值【比如UUID】,进行求hash,然后分别对多个hash结果,在对应位置对比是否全为1或者某个位置为0,
一旦有一个位置标识为0,表示本次查询UUID,不存在于缓存,再去查询DB.
起到一个再过滤的效果。
2》解决方法2:把无效的ID,也在redis缓存起来,并设置一个很短的超时时间。
缓存雪崩:缓存同一时间批量失效,导致大量的访问直接访问DB
解决方法:
在做缓存时候,就做固定失效时间+随机时间段,保证所有的缓存不会同一时间失效
缓存击穿:在缓存失效的时候,会有高并发访问失效的缓存【热点数据】
解决方法:
最简单的解决方法,就是将热点数据设置永不超时!
第二个解决方法:对访问的Key加上互斥锁,请求的Key如果不存在,则加锁,去数据库取,新请求过来,如果相同KEy,则暂停10s再去缓存取值;如果Key不同,则直接去缓存取!
===============================================================================
7.redis的两种持久化策略 RDB和AOF 【深入一下,重启以后的备份恢复】
https://www.cnblogs.com/sxdcgaq8080/diary/2019/05/06/10819315.html
===============================================================================
8.AOF的瘦身重写机制
https://www.cnblogs.com/sxdcgaq8080/diary/2019/05/06/10819315.html
===============================================================================
9.Redis过期策略+内存淘汰机制
https://www.cnblogs.com/sxdcgaq8080/diary/2019/05/07/10824026.html
===============================================================================
10.redis调用了flushdb 或者flushAll,之后,重启后数据还存在么
重启以后,RDB中就没有了数据,AOF文件中最后一行的命令就是flushdb。
如果删除flushdb,可以保留所有数据,否则,没有了。
如果AOF执行了rewrite,那数据也没有了!
https://www.cnblogs.com/sxdcgaq8080/diary/2019/05/06/10819315.html
===============================================================================
11.redis中的lua脚本【涨姿势】
===============================================================================
12.redis的主从复制
https://www.cnblogs.com/sxdcgaq8080/diary/2019/05/07/10826519.html
===============================================================================
13.redis的哨兵机制
https://www.cnblogs.com/sxdcgaq8080/diary/2019/05/09/10836654.html
===============================================================================
14.redis的集群部署
https://www.cnblogs.com/sxdcgaq8080/diary/2019/05/10/10843989.html
===============================================================================
转载于:https://www.cnblogs.com/sxdcgaq8080/p/10682525.html
【面试 redis】【第十二篇】redis的相关面试问题【完结】相关推荐
- 撩课-Java面试宝典-第十二篇
学习地址: 撩课-JavaWeb系列1之基础语法-前端基础 撩课-JavaWeb系列2之XML 撩课-JavaWeb系列3之MySQL 撩课-JavaWeb系列4之JDBC 撩课-JavaWeb系列5 ...
- Redis数据库(二)——Redis高可用、持久化及性能管理
Redis数据库(二)--Redis高可用.持久化及性能管理 一.Redis 高可用 主要的高可用技术 二.Redis 持久化 1.持久化的功能 2.两种持久化方式 3.RDB 和 AOF 的区别 ① ...
- matlab最优控制实验报告_第十二篇 章 用MATLAB解最优控制问题及应用实例 最优控制课件.ppt...
第十二篇 章 用MATLAB解最优控制问题及应用实例 最优控制课件.ppt 综上所述可得结论:Q=diag(1,0,0),R=2时,系统各方面响应较好. 矩阵Q变大时,反馈矩阵变大: 当Q的对角线上第 ...
- CCIE-LAB-第十二篇-EIGRP+EIGRP末节区域+leak map+分发列表
CCIE-LAB-第十二篇-EIGRP+EIGRP末节区域+leak map+分发列表 实际中,思科只会给你5个小时去做下面的全部配置 这个是CCIE-LAB的拓扑图 问题 翻译:1.确保分支3分支4 ...
- CCNA-第十二篇-STP+ACL(下)
CCNA-第十二篇-STP+ACL(下) 首先说说要跳跳了 立个小FLAG, 两个月内急速完成CCIE理论+LAB实操 因为接了个工作,主要我能做到就能做这份工作. 其实NP中间的点很多都会,只是因为 ...
- CCIE理论-第十二篇-IPV6-NDP协议
CCIE理论-第十二篇-IPV6-NDP协议 首先我们知道 在IPV4中 A:0.0.0.1-126.255.255.255 B:128.0.0.1-191.255.255.255 C:192.0.0 ...
- 国外交友网站开发源码 第十二篇
最近由于工作生活的事情比较多,所以就没有更新,这篇是国外交友网站开发源码 第十二篇 希望大家能够喜欢. 私信列表 class WechatController extends SiteControll ...
- 「第十二篇」漏洞扫描
批注[--] 表示他人.自己.网络批注参考资料来源于* 书中批注* CSDN* GitHub* Google* 维基百科* YouTube* MDN Web Docs由于编写过程中无法记录所有的URL ...
- MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解
MySQL数据库,从入门到精通:第十二篇--MySQL数据类型详解 第 12 章_MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2. 1 类型介绍 2. 2 可选属性 2. 2 ...
- 跟我学SpringCloud | 第十二篇:Spring Cloud Gateway初探
SpringCloud系列教程 | 第十二篇:Spring Cloud Gateway初探 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如 ...
最新文章
- Android--取得多组电话号码/Activity.startManagingCursor方法的使用
- Linux正则和grep命令
- HDTV(1920x1080)码率和视频质量关系的研究 2 (实验结果)
- Qt ftp 文件上传工具开发
- Long Way To Go 之 Python 5 (2)
- java 删除zk节点_zookeeper 的节点删除不了?
- aix java 版本_AIX系统安装JDK
- css方块跳动且颜色变化,CSS3 波动的方块
- bat——批量删除文件文件夹
- 【Linux学习笔记】线程同步 之 信号量 之 sem_t结构体
- Qt设置电脑桌面壁纸
- 【ChatGPT】ChatGPT 原理全解析——读完这10篇论文,你就懂了。
- 【Docker】Docker镜像是什么?浅谈对Docker镜像的理解
- 硬盘10K和15K有什么区别?
- Android Studio2.2 CMAKE高效NDK开发
- 致远OA-A8协同管理软件无需登录getshell漏洞
- xss-labs/level6
- PHP连接.mdb文件
- ​大厂产品经理面试题
- druid产生大量mysql的sleep连接
热门文章
- php 循环中return,php中for循环遇上return的示例代码分享
- 视觉SLAM——ORB特征
- C++新特性探究(9.1):functor仿函数探究
- java 下载工具_java_java编写Http服务器下载工具,这个工具比较简单,用于配合 - phpStudy...
- 华三防火墙h3cf100配置双宽带_华三防火墙冗余口配置 h3c f100防火墙配置教程
- zigbee无线传感网技术与应用开发v2.0_ZigBee网络架构详解
- springboot aop使用_SpringBoot 使用AOP实现读写分离
- python期末复习卷_【期末复习卷A】六年级科学上册期末复习试题
- C语言字符型常量和字符串常量的区别
- java 日期for循环_java for循环的时候增加循环体的长度是不是不太好的?