zoukankan      html  css  js  c++  java
  • 【Redis】Redis持久化

    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 
  • 相关阅读:
    正则表达式学习笔记(3)字符类
    一个Service/Functional/Persistence的简单框架
    在Visual Studio 2008环境下安装Boost
    你需要掌握的三种编程语言
    abstract、virtual、override 和 new
    WINCE下编译STLPort
    VS2008环境下编译使用SGI STL(using stlport 5.2.1)
    QT For WinCE, Visual Studio 2008环境的搭建
    VC6.0、VS2005、VS2008安装STLport5.2.1
    Ubuntu 11.10 安装nginx+php5+mysql 的web服务器
  • 原文地址:https://www.cnblogs.com/amberbar/p/10147125.html
Copyright © 2011-2022 走看看