美文网首页
redis持久化

redis持久化

作者: 守望者_0173 | 来源:发表于2020-01-17 09:15 被阅读0次

    redis是一个可持久化的内存、key-value数据库。
    作为内存数据库,为了防止服务器断电或系统宕机而引起的数据丢失问题,Redis自带了持久化功能,就是将内存中的数据同步到磁盘来保证持久化(防止数据丢失)。
    redis支持两种持久化方式:RDB(redis database)和AOF(append only file)。

    RDB(redis database)持久化

    概念:在指定的时间间隔内将内存中的数据集快照(Snapshot)写入磁盘,待服务重启时,将快照文件读入内存中。
    原理: 在持久化时,redis使用Fork方式单独创建一个进程来进行持久化,该进程会将内存中的数据写入到一个临时文件中,待持久化结束后,用临时文件替换上次持久化保存的文件(默认的文件名为dump.rdb)。
    Fork原理:复制一个与当前进程一样的进程,新进程的所有数据都与原进程一样,但是一个全新的进程,并作为原进程的子进程。
    触发条件:可以通过 redis命令 或者配置 redis.conf 文件来指定redis持久化的时机。
    (1)使用命令
    save立刻持久化,其他操作全部阻塞。
    bgsave( redis会在后台异步进行快照操作,同时还可响应客户端的请求,可用命令 lastsave 获取最后一次成功执行快照的时间 )
    flushall ( 清空命令也会触发持久化操作,但dump.rdb文件中是空的,无意义)
    shutdown ( 关闭数据库命令也会触发redis持久化操作 )
    (2)使用 redis.conf 配置文件
    相关配置位于 redis.conf 文件中的 "SNAPSHOTTING" 配置部分:save <seconds> <changes> 指定在 seconds 秒内有 changes 次跟新操作,就进行一次持久化。
    禁用RDB持久化: 可以通过 redis命令 或者配置 redis.conf 文件来禁用 RDB持久化

    (1)使用命令

    redis-cli config set save ""

    (2)使用 redis.conf 配置文件

    相关配置位于 redis.conf 文件中的 "SNAPSHOTTING" 配置部分,设置 save "" 配置时,代表禁用RDB持久化。
    持久化文件:位于 redis.conf 文件中的 "SNAPSHOTTING" 配置部分:

    dir 参数配置持久化文件的目录,dbfilename 参数配置持久化参数的名称。
    恢复持久化文件:将备份文件移动至 dir 参数配置持久化文件的目录下,并将文件名改为 dbfilename 参数配置持久化参数的文件名,然后启动数据库即可恢复数据。

    若 dump.rdb 文件存在异常,数据恢复将报错。可使用命令 redis-check-dump --fix <filename> 命令对 dump.rdb 持久化文件进行修复,然后重启redis服务即可。

    参考链接:https://www.cnblogs.com/DeepInThought/p/10707586.html

    相关文章

      网友评论

          本文标题:redis持久化

          本文链接:https://www.haomeiwen.com/subject/imqczctx.html