数据持久化

redis 持久化

痞子三分冷 提交于 2019-12-30 18:41:31
前言   redis的所有数据都是保存到内存中的, 那么, 如果出现了断电情况, 是不是就会丢失数据.   那有什么办法来解决这个数据丢失问题呢? 持久化   redis作为这么牛B的软件, 这方面当时是考虑过的, 所以redis给出了两种方案.   打开redis.conf配置文件, 这个文件在前面安装的时候提到过. 方案一: 默认 rdb   rdb : 快照形式, 定期把内存中当前时刻的数据保存到磁盘中.    1. 如果15min内, 有 >=1 个值发生了改变, 则15min保存一次快照文件 2. 如果5min内, 有 >=10 个值发生了改变, 则5min会保存一次快照文件 3. 如果每分钟都有 >=10000 个值发生改变, 则每分钟都会保存到磁盘中 按照这种方式, 还是有可能会丢失数据的, 但是丢失数据的量会小很多. 这个是redis默认的持久化方案. 方案二: aof aof : append only file. 把所有对redis数据库的增删改操作的命令, 保存到文件中, 数据库恢复时, 把所有命令执行一遍就可以了 当把这个设置成yes之后, 在bin目录下面, 就会出现 appendonly.aof 文件. 这种方式对磁盘的操作会变得很频繁, 这会导致存储速度慢一些. 正常情况下, 不会出现数据丢失的, 主要是断电这种, 会丢失数据. 一般使用中,

Redis的持久化

不想你离开。 提交于 2019-12-30 18:40:49
Redis的持久化有两种方法 一,RDB:是redis的默认方法,RDB相当于照快照,保存的是一种状态(保存的文件后缀是 rdb) 优点:1.快照保存数据速度极快,还原数据速度极快    2.适用于灾难备份 缺点:1.小内存机器不适合使用。     RDB机制符合要求就会照快照。(随时随地的启动),会占用一部分系统资源(突然地),     很可能内存不足直接宕机。(宕机后,服务器会关闭,非正常关闭) 适用于内存比较充裕的计算机。  RDB照快照的条件:      1.服务器正常关闭时候,照快照。 ./bin/redis-cli shutdown     2.key 满足下列任何一个条件,照快照。     save 900 1:  15分钟内有1个key发生变化,则dump内存快照。     save 300 10:  5分钟内有10个key发生变化,则dump内存快照。     save 60 10000: 1分钟内有10000个key发生变化,则dump内存快照。 二,AOF:使用日志保存数据操作(默认为关闭) 修改配置:1.开启 AOF :将appendonly no改为appendonly yes      2.去掉 appendfsync (everysec 或 always 或 no )前方的 #      3.按下Esc或Ctrl+C输入:wq(保存并退出)     

13_Redis_持久化

匆匆过客 提交于 2019-12-30 18:39:44
一:概述:    Redis的高性能是山于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。   Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式心可以单独使用其中一种或将二者结合使用。   关系型数据库MySQL持久化:数据保存在硬盘上 , 何增删改语句,都是在硬盘上做的操作,断电以后,硬盘上的数据还是存在。   非关系型数据库Redis:默认情况下,所有的增删改,数据都是在内存中进行操作。断电以后, 保存在内存中的数据 不存在的 二: Redis持久化策略: 适用于:适用于灾难备份、内存比较充裕的计算机   1、RDB持久化( Redis的默认持久化机制, 无 需配置)该机制是指在指定的时间间隔内将内存中的数据集 快照 写入磁盘。       2、 AOF持久化:该机制将以 日志的形式 记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。      3、无持久化:我们可以通过配置的方式禁用Redis服务器的持久化功能,这样我们就可以将Redis视为一个功能加强版的memcached了。   4、 Redis 可以同时使用RDB和AOF。 来源: https://www.cnblogs.com/yaboya/p

Redis持久化——rdb

前提是你 提交于 2019-12-30 10:54:39
rdb是在指定的时间间隔内内存中的数据集快照写入磁盘,也就是常说的Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再将这个临时文件替换上次持久化好的文件,整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模的数据恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加高效,RDB的缺点是最后一次持久化后的数据可能会丢失。 Fork:作用是复制一个与当前进程一样的进程。新进程的所有数据(变量,环境变量,程序计数器等等),数值都会和当前进程一样,但是是一个全新的进程,并作为原进程的子进程。隐患就是如果当前进程特别大,本来程序就慢,又fork了一份,又会降低速度 优势:适合大规模的数据恢复,对数据完整性和一致性要求不高 劣势:在一定时间间隔做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照所有修改。Fork的时候内存中的数据被克隆了一份,大约2倍的膨胀性需要考虑 RDB保存的是dump.rdb文件 满足3个条件之一就会触发RDB,生成dump.rdb文件,一般情况下生产上的dump文件都会有备份,如果生产机器上的rdb文件损坏,从备份文件中恢复。也就是冷拷贝,从主机拷贝到备机上,可以cp dump

Redis持久化——aof

心已入冬 提交于 2019-12-30 10:53:44
aof:以日志的形式来记录每个写瞬间,将Redis执行过的所有写操作记录下来(读操作不记录),只许追加文件但不可改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写治理从前到后执行一次以完成数据的恢复工作。 aof保存的是appendonly.aof文件 默认关闭:yes打开aof持久化 默认名字:appendonly.aof 3种策略:always:同步持久化,每次发生数据变更会被立即记录到磁盘性能较差但数据完整性比较好 everysec:出厂默认推荐,异步操作,每秒记录,如果一秒内宕机,有数据丢失 no: 当aof与rdb同时存在时用的是aof 当appendonly.aof文件出现文件破损等问题后,使用redis-cheak-aof来修复 命令:redis-cheak-aof --fix appendonly.aof,dump也有redis-cheak-dump no-appendfsync-on-rewrite no:重写时是否可以用appendfsync,用默认no即可,保证数据安全 重写触发触发机制: auto-aof-rewrite-percentage 100:设置重写的基准值百分比(100%,也就是一倍) auto-aof-rewrite-min-size 64mb:设置重写的基准值(文件大于64M)

redis缓存技术学习

邮差的信 提交于 2019-12-30 08:40:53
1 什么是redis redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、 list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操 作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的 是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 2 性能怎么样 Redis是一个高性能的key-value内存数据库。官方性能测试结果: set操作每秒110000次,get操作每秒81000次。 3 可不可以存对象 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。 4 Redis与memcache的最大区别 Replication(树形) data types(String、Lists、Sorted Sets、Hashes) persistence (snapshot

Redis入门部署及持久化

余生颓废 提交于 2019-12-29 21:36:31
软件简介 软件说明 Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品。 Redis采用内存(In-Memory)数据集(DataSet) 。 支持多种数据类型。 运行于大多数POSIX系统,如Linux、*BSD、OS X等。 软件特性 1)透明性:分布式系统对用户来说是透明的,一个分布式系统在用户面前的表现就像一个传统的单处理机分时系统,可让用户不必了解内部结构就可以使用。 2)扩展性:分布式系统的最大特点就是可扩展性,他可以根据需求的增加而扩展,可以通过横向扩展使集群的整体性能得到线性提升,也可以通过纵向扩展单台服务器的性能使服务器集群的性能得到提升。 3)可靠性:分布式系统不允许单点失效的问题存在,它的基本思想是:如果一台服务器坏了,其他服务器接替它的工作,具有持续服务的特性。 4)高性能:高性能是人们设计分布式系统的一个初衷,如果建立了一个透明,灵活,可靠的分布式系统,但他运行起来像蜗牛一样慢,那这个系统就是失败的。 软件获取及帮助 官方网站:https://redis.io/ 下载网站:http://download.redis.io/releases/ 帮助网站:http://redisdoc.com/ 软件功能 1)高速读写 2)数据类型丰富 3)支持持久化 4)多种内存分配及回收策略 5)支持事物

redis两种持久化方式的优缺点

Deadly 提交于 2019-12-29 21:36:03
redis两种持久化的方式 RDB持久化可以在指定的时间间隔内生成数据集的时间点快照 AOF持久化记录服务器执行的所有写操作命令 ,并在服务器启动时 ,通过重新执行这些命令来还原数据集 ,AOF文件中全部以 redis协议的格式来保存 ,新命令会被追加到文件的末尾 ,redis还可以在后台对 AOF文件进行重写 ,文件的体积不会超出保存数据集状态所需要的实际大小 , redis还可以同时使用 AOF持久化和 RDB持久化 ,在这种情况下 ,当 redis重启时 ,它会有限使用 AOF文件来还原数据集 ,因为 AOF文件保存的数据集通常比 RDB文件所保存的数据集更加完 RDB的优点 RDB 是一个非常紧凑( compact)的文件,它保存了 Redis 在某个时间点上的数据集。 这种文件非常适合用于进行备份: 比如说,你可以在最近的 24 小时内,每小时备份一次 RDB 文件,并且在每个月的每一天,也备份一个 RDB 文件。 这样的话,即使遇上问题,也可以随时将数据集还原到不同的版本。 RDB 非常适用于灾难恢复( disaster recovery):它只有一个文件,并且内容都非常紧凑,可以(在加密后)将它传送到别的数据中心,或者亚马逊 S3 中。 RDB 可以最大化 Redis 的性能:父进程在保存 RDB 文件时唯一要做的就是 fork 出一个子进程

Redis数据库的持久化

感情迁移 提交于 2019-12-29 21:35:53
一、RBD方式   rdb方式是通过快照的形式将内存中的数据保存一份副本存储在硬盘。 1、配置文件自动执行快照   在配置文件中设置参数,可以使redis服务在一定条件下自动执行快照。配置如下:   save 900 1   save 300 10   save 60 1000   意思是,在N秒内有M次对数据的操作就要执行一次快照,如900秒至少有一次数据操作就执行一次快照。 2、手动执行快照   SAVE命令   该命令会占用Redis的主进程,可能会使redis阻塞客户端的请求。这种指令无法达到边服务边操作的效果。   BGSAVE命令   该命令可以达到后台异步执行的效果,快照的同时可以接受来自客户端的请求。在执行BGSAVE命令后,redis会返回OK,表示后台开始执行快照操作。执行快照成功与否可以通过LASTSAVE指令查看最近一次执行快照成功的时间,如果是当前时间,说明快照结束。 3、快照的原理   快照可以将内存中的数据备份到磁盘,在服务器重新启动时可以从dump文件中获取数据加载到内存,实现客户端与数据库服务的交互。内存与磁盘的交互图如下:   在执行快照时,会fork出一个子线程,该子线程会产生一个虚拟内存空间,进行一个write操作,CPU 资源很紧张。因此,如果在一台物理机上部署多个 Redis,应该避免同时持久化操作。将所有的数据写入一个临时文件

Redis持久化机制

淺唱寂寞╮ 提交于 2019-12-29 21:35:34
原文: Redis持久化机制 Redis把数据存储在内存中,当进程退出后数据就会丢失。Redis持久化机制可以将内存中的数据存储到磁盘上,当重新启动时可以从磁盘文件中读取数据加载到内存中。 Redis支持两种持久化机制:全量镜像RDB和增量式持久化AOF。 RDB RDB是Redis的快照,存储了Redis中所有未过期的键值对。 在 redis.conf 中配置RDB: # 配置rdb文件的路径 # 若使用相对路径,工作目录由 dir 配置指定 dbfilename dump.rdb dir /var/lib/redis # save 项配置保存策略, 格式为`save <seconds> <changes>` # save 条件可以配置多个, 若其中任一个条件被满足则会更新快照 save 900 1 # 900 秒内至少有 1 个 key 被改变 save 300 10 # 300 秒内至少有 300 个 key 被改变 save 60 10000 # 60 秒内至少有 10000 个 key 被改变 save "" # 注释所有 save 配置,或在最后添加一个空的save配置可以禁用自动保存 stop-writes-on-bgsave-error yes # 当保存快照文件失败后,redis不再执行任何写请求,以避免无法持久化造成错误 rdbcompression yes #