1、NOSQL概述
NoSQL:Not Only SQL 不仅仅是SQL,通常指的是非关系型的数据库。MySQL和Oracle都是属于关系型数据库
解决高并发、高海量、高扩展与高可用。让用户访问数据快。
非关系型数据库可以通过不断的添加服务器节点来实现扩展,而不需对原有的数据库进行维护。
高可用是当redis服务器挂到了不可用了,需要redis重启后里面的数据立即可用,redis也有数据持久化机制保证redis重启之后依然数据可用。
Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
redis支持五种数据类型都有哪些?
string、hash、list、set、sorted
Redis中有db0-db15编号的16个数据库。我们不能创建新的数据库,也不能删除数据库。数据库中也没有表的结构,客户端默认连接第0个数据库。
2、Redis持久化策略
https://blog.csdn.net/Leon_cx/article/details/81545178
实现步骤:
1、修改配置文件。
2、重启redis服务器端,要求启动的时候指明配置文件启动
小结
● rdb策略的优点
RDB文件小,非常适用于定时备份,用于灾难恢复,性能更高
持久化的东西是内存中键值对的最后结果,没有记录key的修改过程。
● rdb策略的缺点
不够实时,容易数据丢失
当一次持久化数据集很大的时候,会出现服务暂停。
● 存在老版本的Redis不兼容新版本RDB格式文件的问题。
2.2 AOF策略
默认没有开启的策略,需要修改配置文件进行如下操作:
开启AOF后,持久化策略有3个
默认是采用的策略是每秒持久化一次
AOF采用追加方式进行默认每秒持久化,会带啦持久化文件随着时间不断增大,AOF会记录每一个key所有修改操作的过程。
疑问:持久化日志文件过大怎么办?
随着命令不断从AOF缓存中写入到AOF文件中,AOF文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制来压缩AOF文件。(如下信息都在配置文件中)
AOF文件的压缩和RDB文件的压缩原理不一样,RDB文件的压缩是使用压缩算法将二进制的RDB文件压缩,而AOF文件的压缩主要是去除AOF文件中的无效命令,比如说:
AOF重写的触发机制也分为手动触发和自动触发两种方式。
手动触发
执行bgrewriteaof命令直接触发AOF重写
自动触发
在redis.config配置文件中有两个配置项
auto-aof-rewrite-min-size 64MB
auto-aof-rewrite-min-percenrage 100
可以在redis.conf配置文件中添加这两个参数来自动触发AOF重写,执行bgrewriteaof命令
AOF重写流程
一一执行bgrewriteaof命令的时候,如果当前有进程正在执行AOF重写,那么直接返回;如果有进程正在执行bgsave,那么等待bgsave执行完毕再执行AOF重写。
一一Redis主进程会fork一个子进程执行AOF重写,开销和RDB重写一样。
一一AOF重写过程中,不影响Redis原有的AOF过程,包括写消息到AOF缓存以及同步AOF缓存中的数据到硬盘。
一一AOF重写过程中,主进程收到的写操作还会将命令写到AOF重写缓冲区,注意和AOF缓冲区区分开。
一一由于AOF重写过程中原AOF文件还在陆续写入数据,所以AOF重写子进程只会拿到fork子进程时的AOF文件进行重写。
一一子进程拿到原AOF文件中的数据写道一个临时的AOF文件中。
子进程完成AOF重写后会发消息给主进程,主进程会把AOF重写缓冲区中的数据写道AOF缓冲区,并且用新的AOF文件替换旧的AOF文件。
上面讲的是AOF重写的主要流程,下面再讲一些细节上的东西:
小结
● AOF策略的优点
更高的数据安全性,因为持久化的频率更高了
● AOF策略的缺点
性能的低了,因为持久化的频率太高了
Redis重启时加载持久化文件的顺序
● Redis重启的时候优先加载AOF文件,如果AOF文件不存在再去加载RDB文件。
● 如果AOF文件和RDB文件都不存在,那么直接启动。
● 不论加载AOF文件还是RDB文件,只要发生错误都会打印错误信息,并且启动 失败。
总结
建议同时使用2种策略
关于Redis的两种持久化方式到这里就介绍完了,这里再总结一下:
本文地址:https://blog.csdn.net/weixin_45226030/article/details/106087623
如对本文有疑问, 点击进行留言回复!!
厉害!俩月吃透阿里P8架构师推荐608页kafka源码,成功入职蚂蚁
性能 1.84 倍于 Ceph!网易数帆开源分布式存储系统 Curve
荐 面试半年,上个月成功拿到阿里P7offer,全靠我啃烂了这份2020最新面试题!
高并发高可用复杂系统中的缓存架构(十五) 缓存架构讲解,如何保证缓存数据库一致性
网友评论