IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis面试题........持续更新中......... -> 正文阅读

[大数据]Redis面试题........持续更新中.........

一、什么是Redis
Redis(Remote Dictionary Server)是一个使用C开发的高性能NoSql。数据都保存在内存中,读写速度很快(10w+次/秒)

二、Redis特点
优点:
支持事务
支持持久化(AOF、RDB)
数据类型丰富(String、Hash、List、Set、SortedSet)
读写性能优异
单线程执行
支持主从复制

缺点:
受内存大小限制
在线扩容较复杂

三、为什么不用Map、Guava做缓存?
因为Map、Guava是本地缓存,仅限当前JVM内使用,而Redis是分布式缓存

四、Redis应用场景
计数器、缓存、会话缓存、全页缓存、DNS之类的表、分布式锁、消息队列(消息队列建议用Kafka等的中间件)

五、Redis的持久化
1.RDB(Redis Database)
将内存中的数据以快照形式保存到磁盘中,产生的文件为dump.rdb。方便数据备份。

2.AOP(Append Only File)
将每次的写命令,保存到日志文件中。之后每次重启服务,都会跑一次日志文件中的写命令。保证了数据的安全性。

六、过期策略
1.定时过期
ttl变为0,则过期
2.惰性过期
key被访问时,才检查是否过期
3.定期过期
定期扫描出已过期的key

七、如何设置key的过期时间和将key永久有效
设置过期时间 expire
永久有效 persist

八、内存淘汰机制
当内存不够时,会触发内存淘汰。
1.对于全局的key
1.再写时报错
2.移除最近最少使用的key
3.随机移除key

2.对于设置了过期时间的key
1.移除最近最少使用的key
2.随机移除key

九、Redis实现异步队列
用List,生产用lpush,消费用lpop
当lpop没有数据时,可以用sleep,或者直接用blpop(相比于lpop,会阻塞)

十、String的最大长度
512M

十一、如何查许多个固定前缀的key
1.keys 一次返回,但因为redis是单线程,所以会阻塞服务
2.scan 需多次迭代返回,但不会阻塞服务,可能会出现重复的,且比keys慢

十二、Redis主从同步、读写分离
其实就是Master Slave模式(主写从读),需要修改redis.conf(redis服务的配置文件)
在这里插入图片描述

主节点设置:

// 指定端口
port  8088
// 配置 daemonize 为yes,修改为后台启动
daemonize yes
// 配置连接密码,可以设置可以不设置(我默认配置为123456)
requirepass 123456
// 配置 bind 配置需要连接机器的ip(这里设置的是全部都可以连接本节点)
bind 0.0.0.0

从节点设置:

// 配置该节点是谁的从节点  (slaveof 主节点ip 端口号)
slaveof 192.168.2.111 6379
// 配置 masterauth 主节点认证密码
masterauth 123456
// 从节点是否只读,默认yes
slave-read-only yes

设置完之后用redis-server启动服务,然后可以使用 info命令 查看节点信息

十三、哨兵(Sentinel)
 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。需要修改sentinel.conf(哨兵的配置文件)
 在这里插入图片描述

// 指定运行端口
port  212
// 监听指定的redis服务 ,且加上权重(权重用于之后计算用哪个作为新的master)
sentinel monitor mymaster 127.0.0.1 6380 2

之后 用redis-sentinel 启动sentinel(记得指定配置文件)

十四、Sentinel的工作方式:
1):每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令
2):如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线。
3):如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态。
4):当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线
5):在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令
6):当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次
7):若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除。
若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除。

十五、io多路复用机制
redis 是一个单线程却性能非常好的内存数据库, 主要用来作为缓存系统。 redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:46:35  更:2021-12-01 17:48:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:09:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码