Redis学习-4-2 Redis持久化

1.持久化:

数据保存到一个不会丢失的地方就是持久化,可认为是永久存储的;

2.Redis持久化:

Redis的数据存储在内存中,是不安全的,所以Redis有自己的持久化方案,将内存数据定期保存到磁盘文件中,当Redis崩溃了或者计算机意外关机了,重启Redis服务的时候,将磁盘中文件恢复到内存中来;

3.Redis持久化方案:

1.RDB:

Redis Data Base,就是在指定的时间间隔内将内存中的数据集快照写入磁盘,数据恢复时将快照文件直接再读到内存。

RDB保存了在某个时间点的数据集(全部数据),存储在一个二进制文件中,只有一个文件,默认是dump.rdb。RDB默认是开启的,默认保存到启动redis的文件中。

二进制文件的读写特别高,redis.conf文件中配置即可,

保存策略的修改 save 900 1:900秒内有1个key被改动,可以配置多个策略,同时起作用,任意一条进行内存数据就写到文件中

dbfilename:设置RDB的文件名,默认是dump.rdb

dir:指定RDB文件的存储位置,默认是./ 就是当前目录,在哪里启动,哪里就是当前目录

配置步骤:

在redis的cli窗口中执行shutdown将redis停掉

在linux系统窗口中删除dump.rdb文件: rm dump.rdb -f

ll dump.rdb 文件已被删除

cd到redis.conf

vim redis.conf

搜索snap  可以看到默认配置的三个策略,任意一个满足就都执行

关闭RDB的方式:  将save ""注释去掉,将save三种策略注释,就关闭了

当然可以自己设置快照策略:

save 20 3;20秒内有3个数据做改动就保存

dbfilename dump.rdb

dir ./

剩下两个参数不改动

./redis-server  ../redis.conf

ll dump.rdb

ping  =>PONG

set k1 v1

set k2 v2

set k3 v3

满足了20秒内有3个数据做改动了就开始save执行RDB了

ll dump.rdb就有这个文件了

存在的问题:save <seconds> <changes>时间和修改的数目

save 300 10,300秒内只改变了9个key的时候redis就崩溃了,那这9个数据就丢失了,没保存上

所以如果对数据保存要求不高且希望保存性能高,可以使用RDB的方式

 适合做备份,条件满足就会将数据写道二进制文件中,速度快,但是有可能会造成数据丢失,默认是开启的;

2.AOF:

Append-only file:每次将redis中数据修改的命令都记录到AOF文件中,不记录读取,只记录修改,每一个数据修改命令记录到文件中,redis重启的时候读取文件,将命令都执行一遍;

文本文件记录的写入命令,默认是没有开启的,在redis.conf文件中开启AOF,将redis.conf文件中的appendonly修改为yes就开启了

appendfilename appendonly.aof

dir:默认是./

appendfsync:配置向aof文件写命令数据的策略: 有以下参数来做:

(1)no :不主动进行同步操作,而是完全交由操作系统来做(即每30秒一次),比较快但不是很安全,会有数据丢失;

(2)always:每次执行写入都会执行同步,慢一些但是比较安全

(3)everysec:每秒执行一次同步操作,比较平衡,介于速度和安全之间,这个是默认项;

停掉redis,修改配置文件redis.conf,aof文件中可以编辑,可以修改内存崩溃的数据将其删除

aof文件越来越大,数据恢复的时候会越来越慢,但是redis有个redis的机制:

set age 10 ,set age 20 ,set age 30,aof文件重写的时候set age 30成功了,将set age 10和set age 20 删除掉,缩小aof的尺寸,开始执行重写就是auto-aof-rewrite-min-size: 默认64mb,允许重写的最小aof文件大小,当aof文件大于64m的时候就开始整理aof文件,去掉无用的操作命令,缩小aof文件;

如果对数据丢失要求高数据很重要,速度要求不是很快的话可以使用aof,

aof和rdb可以同时存在同时起作用,首先读取aof文件,对数据保存比rdb更完整的

AOF:

原文地址:https://www.cnblogs.com/healthinfo/p/9618091.html

时间: 2025-01-05 21:48:20

Redis学习-4-2 Redis持久化的相关文章

Redis学习总结(1)——数据持久化

以前研究Redis的时候,很多东西都不太明白,理解得也不太深,现在有时间重新拾起来看看,将一些心得记录下来,希望和大家一起探讨. 一.简介 Redis是一个单线程高可用的Key-Value存储系统,和Memcached类似,但是实际使用上最大的区别有两方面: Redis支持多种数据结构类型的value,比如string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型): Memcached在出现系统瘫痪的情况下,无法实现系统恢复,而

Redis学习总结之一——Redis初入

Redis简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是

redis学习1--初识redis,redis的安装,启动。。。

Linux 环境下 下载redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz 解压 tar -zxvf redis-3.0.7.tar.gz -C /data/wwwroot/ 为了方便目录管理及未来的升级 在当前目录下建立一个连接 cd  /data/wwwroot/ ln -s redis-3.0.7 redis 进入redis 目录 cd redis 或者cd redis-3.0.7 编译redis make (如果

Redis学习二:Redis入门介绍

一.入门概述 1.是什么 Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器. Redis 与其他 key - value 缓存产品(memcached)有以下三个特点: 1)持久化:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再

redis学习之三配置文件redis.conf 的含义

摘自http://www.runoob.com/redis/redis-conf.html 参数说明 redis.conf 配置项说明如下: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile /var/run/redis.pid 3. 指定Redis监听端口,默认端口为6379

Redis学习笔记(4) Redis事务、生存时间及排序

1. Redis事务 Redis中的事务(transaction)是一组命令的集合,一个事务中的命令要么都执行,要么都不执行.事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次执行这些命令. 127.0.0.1:6379> multi OK 127.0.0.1:6379> sadd user:1:following 2 QUEUED 127.0.0.1:6379> sadd user:2:followers 1 QUEUED 127.0.0.1:6379>

Redis学习笔记(三) Redis API与常用数据类型简介

一.Redis中常用数据类型 由上一篇博客可知,Redis目前提供五种数据类型:string(字符串).list(链表).Hash(哈希).set(集合)及zset(sorted set)  (有序集合).现在,我们一一来看看这五种数据类型的基本使用方法.在开始介绍之前,我们先使用刚刚引入的Redis API建立一个Redis客户端对象,有了这个客户端对象,我们才能和Redis服务端进行通信,且看下面的一行代码.我们需要事先指定好Redis服务端的IP地址和端口号,然后根据这两个信息建立一个Re

Redis学习——详解Redis配置文件(三)

一.Redis脚本简介 在我们介绍Redis的配置文件之前,我们先来说一下Redis安装完成后生成的几个可执行文件: redis-server .redis-cli .redis-benchmark .redis-stat .redis-check-dump. redis-cgecj-aof : redis-server:Redis 服务器的daemon启动程序. redis-cli:Redis 命令行执行工具.当然,你也可以用telnet根据其纯文本协议来操作. redis-benchmark

Redis学习六:Redis的持久化-AOF

AOF(Append Only File) 一.是什么 以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作 二.Aof保存的是appendonly.aof文件 三.配置位置 四.AOF启动/修复/恢复 1.正常恢复 1)启动:设置Yes 修改默认的appendonly no,改为yes 2)将有数据

Redis学习七:Redis的持久化-总结(Which one)

1.官网建议 2.RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储 3.AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些 命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大 4.只做缓存:如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式. 5.同时开启两种持久化方式 在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数