redis持久化 RDB AOF

 

一,为什么要持久化

 

分两种情况。

第一种:如果你的项目比较小,只是利用redis 做为纯内存,存一字典、配置参数等少量的数据的话,那么是没必要开发持久化功能的。

 

第二种:项目比较大、用户量大、并发比较高、海量数量、为了提高响应速度将大量的数据放入缓存中。因为内存的资源是宝贵的、所以不可能将所有数据放入内存中,这时候一般情况下就需要进行缓存预热。经过预热后,将热点数据加载到内存中。

比如说我们的redis中经过预热环节,存入了大量的数据后,运行一段时间redis崩溃了,这时并发量又特别高,当没有缓存进行支撑,所以的流量都打到和原始服务、数据库,会引发雪崩的可能。如果说我们的redis崩溃后,重启redis能够快速将热点数据加载到内存中,可以减少系统的停机时间。这时就需要用到redis的持久化了。

 

 

二,redis提供哪些持久化机制

 

redis提供了两种持久化方式:RDB  AOF

 

RDB : 

简单理解,RDB就是redis内存某一个时间点的内存快照。

一般我们会定期生成RDB快照文件,进行本地备份或云备份。这种方式非常适合做内存数据的冷备。

 

优点:

1.生成快照时,对运行中redis的主进程影响小。因为他是fork一个子进程,子进行和主进行共享内存(linux操作系统的机制),所以可以查询遍历内存数据进行快照生成,当主进行对数据改变时是不会影响子进程的,因作系统的 COW(Copy On Write) 机制来进行数据段页面的分离,所以这种方式叫快照。

2.恢复速度快。他是直接读进RDB文件到内存中的。不需要重放等操作。

 

缺点:

1.一般来说RDB快照的生成周期较长,比如1小时或一天生成一次快照。这样的话,一但恢复数据到内存中,将会丢失1小时或一天的数据。

 

2.如果RDB生成的文件过大时,会导致redis对客户端暂停服务。所以RDB生成的时间间隔不要太大。尽量让每次生产的RDB文件小一些。

 

 

AOF:

简单理解为对redis内存数据进行修改的指令数据进行记录。

 

优点:

1.AOF日志文件以append-only模式写入,没有磁盘寻址的开销,写入性能非常高。

 

2.AOF是已日志文件的形式存在的,当对AOF日志文件写入时,其实是先写到内存缓存中(os cache),系统定期异步的刷到硬盘上的,这样就有一个问题,当系统未将内存缓存的数据刷到硬盘之前,系统down机了,就会导致数据丢失。为了解决这个问题,系统提供了一个 fsync(int fd)函数,强制将批量数据刷到硬盘上。

注意:redis收到客户端修改命令时,是先进行参数校验,然后写AOF文件,最后执行客户端的命令的。

 

AOF的fsync策略:

always:每个命令都调用fsync。性能非常差,因为有磁盘的IO操作

everysec:每妙强刷一次。这他参数比较长用。最多失掉1妙的数据,又保证了高性能。

no:永不 fsync——让操作系统来决定同步到磁盘中,容易丢失较多的数据。

 

 

3.AOF日志文件过大的时候,会进行重写操作,对文件瘦身。redis内存的容量是有限的,所以很多数据会进行过期 、删除、LRU清理等操作,这样会导致一些旧的数据内存中已经不存在了,但AOF文件中还有这些指令,导致数据不一致的情况 。所以这里也是fork一个子进程来进行重写操作的,对当前redis内存的数据进行遍历,反向生成命令、写入新AOF日志文件,再将操作过程中发生的增量追加上,将老文件替换。所以也不会对主进程性能操作影响。

 

 

缺点:

1.对写入性能是有影响的,因为是先写入AOF日志文件后再执行相关命令的。

 

2.AOF的日志文件相对于RDB是比较大的。

 

3.恢复速度比较慢,因为需要进行重放指令操作。

 

 

 

RDB和AOF如果选择:

建议两个同时开启。RDB进行冷备。恢复时优先选择AOF的方式,尽量减少数据的丢失。

redis4.0对持久化进行了优化。如果把混合持久化打开,AOF 重写的时候就直接把 RDB 的内容写到 AOF 文件开头,默认是关闭的。

 

 

持久化相关参数配置:

https://www.cnblogs.com/itdragon/p/7906481.html

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值