zoukankan      html  css  js  c++  java
  • redis持久化

    redis可视化工具-redis-desktop-manager

    需要开启redis远程连接,默认redis服务器是没有开启远程连接的,需要修改如下配置:bind 0.0.0.0 表示允许一切客户端连接,如果还是无法连接,说明防火墙未关闭

    持久化机制

    Redis官方提供了两种不同的持久化方法来将数据存储到硬盘里面,分别是:快照和AOF

    快照

    这种方式可以将某一时刻的所有数据都写入硬盘中,当然这也是redis的默认开启持久化方式,保存的文件是以.rdb形式结尾的文件,因此这种方式也称为RDB方式。

    快照生成方式一 客户端方式:BGSAVE和SAVE指令
    • 客户端可以使用BGSAVE命令来创建一个快照,当接收到客户端BGSAVE命令时,redis会调用fork来创建一个子进程,然后子进程负责将快照写入磁盘中,而父进程则继续处理命令请求

    • 客户端还可以使用SAVE命令来创建一个快照,接收到SAVE命令的redis服务器在快照创建完毕之前将不再响应任何其他的命令

    快照生成方式二 服务器配置自动触发

    如果用户在redis.conf中配置了save,redis会在save选项条件满足之后自动触发一次BGSAVE命令,如果设置了多个save配置选项,当任意一个save配置选项条件满足,redis也会触发一次BGSAVE命令

    服务器接收客户端shutdown指令,关闭服务器请求时,会执行一个save命令,执行完后才会关闭服务器

    配置快照生成的位置

    快照可能在保存某次快照后,还未触发下一次快照,然后突然宕机,会出现数据丢失的问题

    AOF(append only file)

    这种方式是将所有客户端执行的写命令写到AOP文件末尾,以此来记录数据发生的变化,因此只需要redis从头到尾执行以此AOF文件所包含的所有写命令,就可以恢复AOF文件的记录的数据集

    日志同步频率
    • always 【谨慎使用】每个redis写命令都要同步写入硬盘,严重降低redis速度
    • everysec 【推荐】【默认】每秒执行一次,同步显示的将多个写命令同步到磁盘,即使系统崩溃,也只丢失1s产生的数据
    • no 【不推荐】由操作系统决定何时同步,当系统发生崩溃时,可能丢失不定数量的数据,另外如果写的频率太低,一次性会写入大量数据,会导致redis阻塞

    如果两种持久化都开启,则以AOF为主

    AOF文件的重写

    AOF的方式也同时带来了另一个问题,持久化文件会变的越来越大。例如我们调用incr test命令100次,文件中必须保存全部的100条命令,其中有99条都是多余的。因为要恢复数据库的状态其实文件中保存一条set test 100就够了。

    为了压缩aof持久化文件,redis提供了AOF重写机制。

    触发重写方式

    • 1.客户端方式触发重写 - 执行BGREWRITEAOF命令,不会阻塞redis的服务

    • 2.服务器配置方式自动触发 - 配置redis.conf中的auto-aof-rewrite-percentage选项

    如果设置auto-aof-rewrite-percentage值为100和auto-aof-rewrite-min-size 64mb,并且启用aof持久化时,

    那么当aof文件体积大于64m,并且aof文件的体积比上一次重写之后体积大了至少一倍(100%)时,会自动触发,如果重写过于频繁,用户可以考虑将auto-aof-rewrite-percentage设置为更大

    举个例子:第一次aof达到64m会重写,加入重写后变为20m,当aof达到40m时就会触发第二次重写,依次类推。。。。

    重写原理

    重写aof文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,替换原有的文件。

    持久化总结

    两种方案既可以同时使用,也可以单独使用,甚至可以都不用,具体取决于用户的数据和应用决定;

    无论哪种,将数据持久化到硬盘都是有必要的,除了持久化外,用户还应对持久化的文件进行备份(最好备份到多个不同的地方);

  • 相关阅读:
    java 文件及流读取
    Image对象及其子类BufferedImage
    形状特征提取-Hu不变矩(转载)
    图像的灰度共生矩阵(转载)
    如何实现图片逐渐加载逐渐显示 转载
    JavaScript的函数和事件(转)
    Java图像文件的读写
    图像处理之常用颜色RGB、灰度值
    Hadoop之TaskInputOutputContext类
    ajax获取城市和相应的地区
  • 原文地址:https://www.cnblogs.com/ginb/p/14474617.html
Copyright © 2011-2022 走看看