redis小复习

本文详细介绍了Redis的关系与非关系数据库区别,重点讲解了Redis的基础知识,包括其作为NoSQL数据库的特点、持久化机制(RDB和AOF)、分布式锁实现、主从复制及哨兵模式。Redis的高可用性和数据安全性在文中也有所阐述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、关系数据库和非关系数据库的区别

二、映射的关系

三、Redis简介

四、Redis基础

五、分布式锁

六、RDB

七、淘汰策略

八、主从复制原理

九、哨兵模式原理


LB(load balance)负载均衡

DMZ:非军事化区域,外网到内围的转换区域,一般在这个区域我们会做那些操作呢?第一个东西是防火墙,而防火墙又封为软件防火墙和硬件防火墙,第二个东西就是负载均衡,DMZ区域可以控制负载均衡,第三个就是流量控制

一、关系数据库和非关系数据库的区别

(1)、数据存储方式不同

关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。

与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。

关系型:依赖于关系模型E-R图,同时以二维表格式的方式存储数据

非关系型:除了以表格形式存储之外,通常会以大块的形式组合在一起进行存储数据

(2)、扩展方式不同

SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。

要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来克服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。

而NosQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。

关系:纵向(天然表格式)

非关:横向(天然分布式)

(3)、对事务性的支持不同

如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是最佳选择。SoL数据库支持对事务(ACID)原子性细粒度控制,并且易于回滚事务。

虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。

关系型:特别适合高事务性要求和需要控制执行计划的任务

非关系:此处会稍显弱势,其价值点在于高扩展性和大数据量处理方面

二、映射的关系

三、Redis简介

Redis是一个开源的、使用c语言编写的NoSQL数据库。

Redis基于内存运行并支持持久化(支持存储在磁盘),采用key-

Redis服务器程序是单进程模型

Redis服务在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行-个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的cPt造成很大压力。即:在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。

建议可以开2个进程

value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。

四、Redis基础

1、redis 是一种非关数据库(内存/缓存)

redis 相比于其他非关数据库优势的地方主要在于:o数据类型丰富

◎持久化(可以将内存种的数据保存在磁盘中)形式为:RDB 与AOF

o使用epoll+I/0复用以及回调机制提升单线程模型的处理性能减少资源消耗(处理性能优化)

2、redis 集群模式:哨兵、主从、cluster(集群)

redis 的集群模式,同时也可以理解为是redis的高可用模式

主从:提供了备份冗余,缺点:无法针对故障进行自动修复,写操作无法负载均衡哨兵:以主从为基础提供了故障自动修复的功能,写操作无法负载均衡

集群:基于主从基础,解决了故障自动修复、写操作负载均衡的问题,同时对于资源需求相较于前两种集群得到了一定的改善

3、高可用中的持久化

RDB 和AOF

(1)持久化方式:

RDB :周期性的快照

AOF :接近实时的持久化(以everysec方式)

(2)redis 启用的优先级

AOF > RDB,同时仅当AOF功能关闭的情况下,redis才会在重新启动时使用RDB的方式进行恢复

(3) RDB 和AOF 中持久化模式

 RDB :由redis主进程(周期性)fork 派生出子进程对redis内存中的数据进行持久化,生成到.rdb文件中 AOF :

根据持久化策略(alawys、no、everysec(默认)),先将redis中的语句保存在缓冲区中,再从缓冲区同步到.aof文件中

五、分布式锁

分布式锁主要作用是在并发时期,去减轻压力的问题

首先tomcat这边进来,然后一个进程进来后,第一条线程会在redis中处理,会在lock地方,也就是第一个地方加一个锁,防止后面的进程进来造成阻塞(是以分布式的方式在等待),接着在这里有个watch dog去监听这个锁,如果规定时间没有处理完,看门狗就会在这做延期

,完成后会手动或者自动去执行解锁。

六、RDB

触发方式:

手动触发:直接执行bgsave持久化命令

②自动触发:按照规定周期执行的语句的数量来触发,配置文件中例如save m n-》save 90 10

bgsave执行时,会控制RDB紫禁城再执行的位置创建.rdb文件,特性是,RDB持久化生产的文件,只记录的结果

有点偏于全量备份,为了提高处理速度和减少落地在磁盘中占用体积,RDB的数据会进行压缩处理。

内存中数据消失了,一旦数据加载失败,会启动失败

特殊的触发方式:主动的关闭redis,但RDB持久化优先级较低

应用场景:

1主动关闭时,触发RDB(redis 默认开启RDB)

2主从复制时,master同步给SLAVE时,,会触发RDB(全量复制),然后触发AOF的增量复制

3在redis重启时,当AOF未开启时候,才会基于RDB文件进行恢复数据,运行redis。

首先这里会以数据追加的方式,把缓存区的数据同步到缓存区

触发条件:

always :每产生一条,就同步—条

no:不自动触发

everysecond:每秒同步—次

七、淘汰策略

默认是惰性删除

随机淘汰

淘汰近期命中较少的数据

#定期删除—》保证两种持久化完成的情况下,同时业务不繁忙/终止业务的时候,删除为了解决缓存压力过大而导致使用swap交换分区以及牵扯到的其他功能模块问题

其他功能模块: AOF的持久化

八、主从复制原理

①从——》主发送SYNC同步请求

②主进行全量复制——》RDB快照

③主在进行完全量复制后,再将缓存中的数据通过aof的方式传递给从

以上初始化完成后

④持续性的由主-》同步给从

九、哨兵模式原理

1、哨兵是有自己的配置文件,只要去指向master节点IP时候就可以了

2、哨兵节点会和配置的主节点建立起两条连接命令连接和订阅连接

PS:redis发布订阅(pub/sub)是一种信息通信模式:发送者发消息,订阅者接收消息

3、哨兵会通过命令连接每10s发送一次INFO命令,通过INFO命令,主节点会返回自己的run_id和自己的从节点信息。

4、哨兵会对这些从节点建立两条连接命令,连接和订阅连接

5、哨兵通过命令连接向从节点发送INFO命令,获取到他的一些信息

run id(redis服务器id)

role(职能)

从服务器的复制偏移量offset

其它

6、通过命令连接向服务器的sentinelhello频道发送一条信息,内容包括自己的IP端口,run_id,配置(后续投票的时候会用到等)

7、通过订阅连接对象服务器的sentinelhello频道做了监听,所以所有的向该频道发送的哨兵的消息都能被接受到

8、解析监听到的消息,进行分析提取,从而知道还有哪些别的哨兵服务节点也在监听这些主从节点了,更新结构体将这些哨兵节点记录下来

9、向观察到的其他的哨兵节点进行监听

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值