redis练习题

2022/2/13 19:19:40

本文主要是介绍redis练习题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.stream介绍:
stream主要用于消息队列,redis本身是有一个发布订阅 (pub/sub)来实现消息队列的,但是由于无法将消息持久化,如果出现宕机等情况就会导致数据丢失。
而Redis Stream提供消息的持久化和主备复制功能,可以让任何客户端访问任何时刻数据,并且能够记住每一个客户端的访问位置,还能保证消息不丢失。
在这里插入图片描述
同一条消息在同一消费组内只能被一个消费者读取消费。

2.info memory命令:
mem_fragmentation_ratio代表内存碎片率:used_memory_rss/ used_memory
一般来说1-1.5之间比较健康。

3.RDB机制:
全量复制
redis提供两种命令来生成全量的rdb文件:
1.save:在主线程中执行,会阻塞主线程
2.bgsave:创建一个子线程,专门用来写入RDB文件,避免主线程阻塞。在这里插入图片描述
其实现原理:主线程会fork一个子线程,并且复制一份数据对应的映射页给子线程,子线程可以通过映射页访问主线程的原始数据。然后子线程生成快照数据。但是如果此时有请求想修改数据怎么办呢?
通过写时复制技术:即当请求需要对键值对c进行操作的时候,主线程会把新数据或者修改后的数据写入到一个新的物理内存地址上(键值对c‘),并修改主线程自己的内存页映射。所以子线程读到的类似于原始数据的一个副本。

增量复制
指做了一次全量快照后,后续的快照只对修改的数据进行快照记录。但是由于我们需要对数据修改进行记录,这就需要额外的开销。在这里插入图片描述

4.redis的发布订阅机制:
redis的发布订阅机制包含三个部分:发布者 订阅者 Channel
在这里插入图片描述
发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息。Redis的这种发布订阅机制与基于主题的发布订阅类似,Channel相当于主题。

5.在使用哨兵机制对发生故障的主从集群进行主从切换时,会涉及:
主库被判定为主观下线—> 主库被判定为客观下线 —> 选举哨兵Leader —> 确定新主库 —> 主从库实际切换

6.Redis 的主从集群可以提升数据可靠性,主节点在和从节点进行数据同步时,会使用两个缓冲区:复制缓冲区和复制积压缓冲区。这两个缓冲区的作用各是什么?会对 Redis 主从同步产生什么影响吗?
复制缓冲区:主节点开始和一个从节点进行全量同步时,会为从节点创建一个输出缓冲区,这个缓冲区就是复制缓冲区。当主节点向从节点发送RDB文件的时候,如果主节点接收到写命令就会将它们暂时存放到复制缓冲区,等到RDB传输完成后,主节点再把复制缓冲区中的写命令发送给从节点,进行同步。

对主从同步的影响:如果主库传输RDB文件以及从库加载RDB文件的时间较长,同时主库接收的写命令较多,就会导致复制缓冲区被写满而溢出。一旦溢出,主库就会关闭和从库的连接,并重新开始全量传输。所以,我们可以通过调整 client-output-buffer-limit slave 这个配置项,来增加复制缓冲区的大小,以免复制缓冲区溢出。

复制积压缓冲区:主节点和从节点进行常规同步时,会把写命令也暂存到复制积压缓冲区,如果从节点和主节点发生网络断连,等从节点再次连接后,可以从复制积压缓冲区中同步尚未复制的命令操作。



这篇关于redis练习题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程