redis的持久化存储

一. redis的高可用

  在Redis中,实现高可用的技术主要包括持久化、复制、哨兵和集群

  1. 持久化:持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。
  2. 复制:复制是高可用Redis的基础,哨兵和集群都是在复制基础上实现高可用的。复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。
  3. 哨兵:在复制的基础上,哨兵实现了自动化的故障恢复。缺陷:写操作无法负载均衡;存储能力受到单机的限制。
  4. 集群:通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。

二. redis的两种持久化存储方式

  持久化的功能:Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。

  RDB持久化: 是将当前进程中的数据生成快照保存到硬盘(因此也称作快照持久化); 保存的文件后缀是rdb;当Redis重新启动时,可以读取快照文件恢复数据。

  AOF持久化: AOF持久化(即Append Only File持久化),是将Redis执行的每次写命令记录到单独的日志文件中(有点像MySQL的binlog);当Redis重启时再次执行AOF文件中的命令来恢复数据。

三. RDB持久化存储

  1. 手动执行指令触发, 进行存储

    save      这个指令会阻塞redis, 执行完之前不再接收其他处理

    bgsave     这个指令会创建一个子进程去处理持久化存储, 线上使用

  2. 配置conf文件触发自动存储

daemonize yes                    #后台运行
bind 127.0.0.1                   #redis绑定地址
port 6379                        #端口
requirepass redhat                #redis登录密码
logfile /data/6379/redis.log    #日志文件
dir /data/6379                  #定义持久化文件存储位置

dbfilename  dbmp.rdb            #rdb持久化文件
save 900 1
save 300 10
save 60  10000                   

save m n   当m秒后, 达到n个存储, 就执行bgsave指令, 进行持久化存储

其他可选配置

stop-writes-on-bgsave-error yes  # 当bgsave出现错误时,Redis是否停止执行写命令;设置为yes,则当硬盘出现问题时,可以及时发现,避免数据的大量丢失;设置为no,则Redis无视bgsave的错误继续执行写命令,当对Redis服务器的系统(尤其是硬盘)使用了监控时,该选项考虑设置为no

rdbcompression yes  # 是否开启RDB文件压缩

rdbchecksum yes    # 是否开启RDB文件的校验,在写入文件和读取文件时都起作用;关闭checksum在写入文件和启动文件时大约能带来10%的性能提升,但是数据损坏时无法发现

四. AOF持久化存储

  1. 触发配置

    Redis服务默认开启RDB, 关闭AOF; 开启AOF只在配置文件中加入 appendonly yes

    启动Redis服务时会优先加载AOF

  2. AOF的常见配置

appendonly no        # 是否开启AOF

appendfilename "appendonly.aof"    # AOF文件名

dir /data/6379                  # 定义持久化文件存储位置

appendfsync everysec    # 持久化策略,每秒都存, always总是

no-appendfsync-on-rewrite no     # AOF重写期间是否禁止fsync;如果开启该选项,可以减轻文件重写时CPU和硬盘的负载(尤其是硬盘),但是可能会丢失AOF重写期间的数据;需要在负载和安全性之间进行平衡

auto-aof-rewrite-percentage 100    # 执行AOF重写时,当前AOF大小(即aof_current_size)和上一次重写时AOF大小(aof_base_size)的比值。

auto-aof-rewrite-min-size 64mb     # 执行AOF重写时,文件的最小体积,默认值为64MB。

aof-load-truncated yes    # 如果AOF文件结尾损坏,Redis启动时是否仍载入AOF文件

五. RDB和AOF持久化存储的优缺点

RDB持久化

  优点:RDB文件紧凑,体积小,网络传输快,适合全量复制;恢复速度比AOF快很多。当然,与AOF相比,RDB最重要的优点之一是对性能的影响相对较小。

  缺点:RDB文件的致命缺点在于其数据快照的持久化方式决定了必然做不到实时持久化,而在数据越来越重要的今天,数据的大量丢失很多时候是无法接受的,因此AOF持久化成为主流。此外,RDB文件需要满足特定格式,兼容性差(如老版本的Redis不兼容新版本的RDB文件)。

AOF持久化

  优点:AOF的优点在于支持秒级持久化、兼容性好,

  缺点:文件大、恢复速度慢、对性能影响大。

原文地址:https://www.cnblogs.com/q767498226/p/11109301.html

时间: 2024-11-13 06:22:14

redis的持久化存储的相关文章

架构设计:系统存储(16)——Redis事件订阅和持久化存储

接上文<架构设计:系统存储(15)--Redis基本概念和安装使用> 3-4.事件功能和配置项 Redis从2.X版本开始,就支持一种基于非持久化消息的.使用发布/订阅模式实现的事件通知机制.所谓基于非连接保持,是因为一旦消息订阅者由于各种异常情况而被迫断开连接,在其重新连接后,其离线期间的事件是无法被重新通知的(一些Redis资料中也称为即发即弃).而其使用的发布/订阅模式,意味着其机制并不是由订阅者周期性的从Redis服务拉取事件通知,而是由Redis服务主动推送事件通知到符合条件的若干订

NoSQL数据库之redis持久化存储(一)

第1章 redis存储系统 1.1 redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Memcached缓存服务软件很像,但是redis支持的数据存储类型比memcached更丰富,包括strings(字符串),lists(列表),sets(集合)和sorted sets(有序集合)等. 这些数据类型支持push/pop,add/remove及取交集,并集和差集及更丰富的操作,而且这些操作

redis的数据持久化存储

redis的数据持久化存储 Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化.Redis支持两种持久化方式: 一.snapshotting(快照)方式快照是默认的持久化方式.这种方式是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb.我们可以配置redis在n秒内如果超过若干个key被修改就自动做快照持久保存. 在约87行,有默认的快照策略(指定在多长时间内,有多少次更新操作,就将数据同步到数据快照文件,可以多个条件

Redis数据持久化机制AOF原理分析二

Redis数据持久化机制AOF原理分析二 分类: Redis 2014-01-12 15:36  737人阅读  评论(0)  收藏  举报 redis AOF rewrite 目录(?)[+] 本文所引用的源码全部来自Redis2.8.2版本. Redis AOF数据持久化机制的实现相关代码是redis.c, redis.h, aof.c, bio.c, rio.c, config.c 在阅读本文之前请先阅读Redis数据持久化机制AOF原理分析之配置详解文章,了解AOF相关参数的解析,文章链

Redis实战(八)Redis的持久化

Redis相比Memcached的很大一个优势是支持数据的持久化, 通常持久化的场景一个是做数据库使用,另一个是Redis在做缓存服务器时,防止缓存失效. Redis的持久化主要有快照Snapshotting和AOF日志文件两种方式. 前者会根据配置的规则定时将内存中的数据持久化到硬盘上, 后者则是在每次执行写命令之后将命令记录下来. >>RDB方式 Redis是会以快照的形式将数据持久化到磁盘上. 默认会将快照文件存储在Redis当前进程的工作目录的dump.rdb文件中, 可以通过配置文件

Redis总结(四)Redis 的持久化

前面已经总结了Redis 的安装和使用今天讲下Redis 的持久化. redis跟memcached类似,都是内存数据库,不过redis支持数据持久化,也就是说redis可以将内存中的数据同步到磁盘来持久化,以确保redis 的数据安全.    redis持久化的两种方式 redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File). RDB,简而言之,就是将存储的数据快照的方式存储到磁盘上, AOF,则是将redis执行过的所有写指

redis使用基础(五) ——Redis数据持久化

redis使用基础(五) --Redis数据持久化 (转载请附上本文链接--linhxx) 当服务器突然发生问题,或者redis重启,如果希望将数据持久化在硬盘中,下次开启redis还有数据时,redis提供了两种方案,一个叫做RDB(通过内存快照(Snapshotting)实现),另一个叫做AOF(日志追加(Append-only file)).通常结合两种方式来实现redis的持久化. 1.RDB RDB通过内存快照实现,会将redis当前的全部数据以快照的方式写入二进制文件中.实现快照有以

redis(5)持久化

一.持久化 计算机的数据有两种状态: 1)持久数据:如内存当中的数据 2)瞬时数据:如硬盘上的数据 持久化就是将瞬时数据转换为持久数据的一个过程,但注意持久化并不意味的数据永远存在,针对不同的持久化,数据的生命周期也是不同的.比如,一次session会话中session容器中的的持久化,如果容器销毁该生命周期也就结束. 二.redis的持久化策略 redis是一个基于内存的数据库,但它也提供了持久化策略,分为两种: 1)RDB 2)AOF redis默认采用rdb策略,你可以选择使用其中一种,也

Redis4.0 之持久化存储

redis如果提供缓存服务,可以关闭所有持久化存储,如此一来redis重启后所有数据会丢失 开启rdb或aof持久化存储,能把redis中的数据持久化到磁盘中. rdb和aof对性能都有影响,所以建议持久化的操作在从库上进行 Redis的rdb存储方式,使用save配置开启rdb存储或者关闭rdb存储 # 默认情况下rdb持久化存储是开启的 [[email protected] ~]# redis-cli -h 127.0.0.1 config set save "" # 关闭rdb存