Redis数据持久化

Redis的特性: 易扩展,大数据高性能,多样灵活的数据模型,受限内存

Redis默认端口: 6379

Redis数据持久化分为有两种:

RDB: 每隔一段时间就把内存数据写入磁盘,如果是备份的话就反过来,从文件中把数据读到内存中。在进行持久化的时候,会由父进程fork出一个子进程,子进程会把数据保存到一个临时文件中,等到持久化完成,就用临时文件替换上次持久化的文件。这一过程中父进程不进行任何的IO流操作

如何触发RDB的操作?

(1)直接输入save

(2)flush操作

(3)触发redis.conf中的配置   save seconds changes

  • 900s内有一次修改,300s内有10次修改,60s内有10000次修改。都会触发RDB。如果不想使用策略可以save ""

AOF: append only file 是一种只追加文件,用日记的形式来记录每一个写操作,将Redis执行的写指令记录下来。改文件只允许追加,不允许修改。当AOF文件到达一定大小(文件大于上一次rewrite文件的100%,并且大于64M)的时候会进行rewrite。rewrite是指把aof文件的内容进行压缩,指保留可以回复数据的最小指令,可以使用bgrewriteaof。重写的原理也是先写临时文件最后再替换,重写的时候并没有读取旧的aod文件,而是把内存中的数据用命令又重写了一份保存到新的AOF文件中。

AOF的fsync策略

Always:同步持久化,每次数据发生变更的时候就会记录到磁盘中,性能较差数据完整

Everysec:默认设置,异步操作,每秒就记录一次。但是如果宕机会损失一秒的操作

no: 不持久化

RDB和AOF的优缺点?

RDB:恢复速度快,但是可能会丢失数据

AOF:数据完整性高,但是恢复速度慢。具有重写机制,以至于AOF文件不至于过大

当数据量大并且不是特别关注数据完整性的时候,选择rdb。对数据完整性要求较高的时候,选择AOF。

RDB和AOF是否可以共存

可以,但是重启redis的时候默认会先找AOF文件恢复

Redis缓存过期策略:

Maxmemory-policy :redis容量超过设置值的时候

1. Volatile-lru: IRU算法移除key,只针对设置过期时间

2. Allkeys-LRU: 对于所有的key用LRU算法移除

3. Volatile-ramdon: 对设置了过期时间的,进行随机删除

4. allkeys-ramdon:所有键值对进行随机删除

5. volatile-ttl:最小ttl进行删除

6. noeviction: 不进行移除,针对写操作,只是返回错误信息

noeviction [ɪ'vɪkʃn]

知识点小记:

  • 当持久化文件错误的时候,可以用工具修复

    redis-check-aof

    redis-check-dump

  • redis日志有4个级别:debug verbose notice warning

  • 默认最大连接数maxclient 10000

【Redis】Redis持久化的更多相关文章

  1. Redis总结(四)Redis 的持久化

    前面已经总结了Redis 的安装和使用今天讲下Redis 的持久化. redis跟memcached类似,都是内存数据库,不过redis支持数据持久化,也就是说redis可以将内存中的数据同步到磁盘来 ...

  2. Redis的持久化的两种方式drbd以及aof日志方式

    redis的持久化配置: 主要包括两种方式:1.快照  2 日志 来看一下redis的rdb的配置选项和它的工作原理: save 900 1 // 表示的是900s内,有1条写入,则产生快照 save ...

  3. redis启用持久化

    redis的持久化有rdb和aof两种. rdb是记录一段时间内的操作,一盘的配置是一段时间内操作超过多少次就持久化. aof可以实现每次操作都持久化. 这里我们使用aof. 配置方式,打开redis ...

  4. redis + 主从 + 持久化 + 分片 + 集群 + spring集成

    Redis是一个基于内存的数据库,其不仅读写速度快,每秒可以执行大约110000的写操作,81000的读取操作,而且其支持存储字符串,哈希结构,链表,集合丰富的数据类型.所以得到很多开发者的青睐.加之 ...

  5. Redis笔记(八)Redis的持久化

    Redis相比Memcached的很大一个优势是支持数据的持久化, 通常持久化的场景一个是做数据库使用,另一个是Redis在做缓存服务器时,防止缓存失效. Redis的持久化主要有快照Snapshot ...

  6. 深入剖析 redis AOF 持久化策略

    本篇主要讲的是 AOF 持久化,了解 AOF 的数据组织方式和运作机制.redis 主要在 aof.c 中实现 AOF 的操作. 数据结构 rio redis AOF 持久化同样借助了 struct ...

  7. 深入剖析 redis RDB 持久化策略

    简介 redis 持久化 RDB.AOF redis 提供两种持久化方式:RDB 和 AOF.redis 允许两者结合,也允许两者同时关闭. RDB 可以定时备份内存中的数据集.服务器启动的时候,可以 ...

  8. redis 数据持久化

    1.快照(snapshots) 缺省情况情况下,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump.rdb.你可以配置Redis的持久化策略,例如数据集中每N秒钟有超过M次更新,就将数据 ...

  9. redis的持久化之AOF

    AOF Redis 分别提供了 RDB 和 AOF 两种持久化机制: RDB 将数据库的快照(snapshot)以二进制的方式保存到磁盘中. AOF 则以协议文本的方式,将所有对数据库进行过写入的命令 ...

  10. redis的持久化方式RDB和AOF的区别

    1.前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据.由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能, ...

随机推荐

  1. hdu 5514 Frogs 容斥思想+gcd 银牌题

    Frogs Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  2. Linux进程通信之文件

    父子进程共享打开的文件描述符------使用文件完成进程间通信. /*** fork_share_fd.c ***/ #include <stdio.h> #include <uni ...

  3. shell中命令代换$()与`` 、 变量代换${} 、 整数运算$(( )) 的区别

    命令代换$()与`` . 变量代换${} . 整数运算$(( )) 1.$( ) 与 ` ` (反引号) 在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(comm ...

  4. Python回归分析五部曲(二)—多重线性回归

    基础铺垫 多重线性回归(Multiple Linear Regression) 研究一个因变量与多个自变量间线性关系的方法 在实际工作中,因变量的变化往往受几个重要因素的影响,此时就需要用2个或2个以 ...

  5. 在linux操作系统上进行简单的C语言源码的gcc编译实验

    尝试在linux上用gcc 而非封装完好的codeblocks,vs等ide 来编译c和cpp源程序 首先查看我的gcc版本,我的是VM centos 自带的,没有的话得自行安装,安装上gcc就可以在 ...

  6. mybatis-puls 字段为null时候的更新问题

    在mybatis-puls重设置的全局更新策略 为null的字段忽略更新.但是在某些业务需求下面,可能需要某些字段更新为null值.那么改如何设置 1, 在你的实体属性上面单独添加需要更新nu l l ...

  7. C/C++程序基础-C++与C有什么不同

    1:C和C++的联系和区别? 答:C是一个结构化语言,它的重点在于算法和数据结构.对于语言本身而言,C是C++的子集.C程序的设计首先要考虑的是如何通过一个过程,对输入进行运算处理,得到输出.对于C+ ...

  8. jquery中mouseover和mouseenter的区别

    jquery中mouseover和mouseenter的区别 一.总结 一句话总结: 见名知意:enter(进入)和over(在上方)的意思好好思考一下 mouseover就是从子元素回到自己的时候也 ...

  9. 配置默认编码为utf8

    修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示: [mysqld] character_set_server=utf8 init_connect='SET NAMES ...

  10. POJ 1789 -- Truck History(Prim)

     POJ 1789 -- Truck History Prim求分母的最小.即求最小生成树 #include<iostream> #include<cstring> #incl ...