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

    1.配置aof,并且形成rewrite之前和之后的对比
    2.配置rdb,手动命令和后台触发,截图对比持久化之前和之后的数据文件的差异

    一.默认开启快照dump

    #save "" 不配置rdb
    save 900 1					# 900秒1次修改
    save 300 10					# 300秒10次修改
    save 60 10000					# 60秒1W次修改
    rdbcompression yes			# 是否对rdb文件进行压缩
    rdbchecksum yes				# 是否对rdb文件进行校验
    stop-writes-on-bgsave-error no	# 生成rdb错误是否继续写入,默认不写入
    dir /usr/local/redis/data			# rdb保存的目录
    dbfilename dump.rdb			# rdb的文件名
    
    • 1.1 redis启动后会优先读取rdb文件
    • 1.2 save命令会阻塞请求
    • 1.3 bgsave异步保存rdb

    二.默认关闭AOF,需手动打开

    appendonly yes					# 是否打开aof,默认关闭
    appendfilename "appendonly.aof"		# aof文件,保存在dir /usr/local/redis/data
    appendfsync everysec				
    选项 同步频率
    always 每个 Redis 命令都要同步写入硬盘。这样会严重降低 Redis 的性能
    everysec 每秒执行一次同步,显式地将多个写命令同步到硬盘
    no 让操作系统来决定应该何时进行同步
    

    三.rdb持久化

    • 3.1关闭rdb
    save ""
    #save 900 1
    #save 300 10
    #save 60 10000
    
    • 3.2因为原来修改过,因此存在数据
    127.0.0.1:6379> info keyspace
    # Keyspace
    db0:keys=4,expires=0,avg_ttl=0
    db1:keys=1,expires=0,avg_ttl=0
    db15:keys=1,expires=0,avg_ttl=0
    127.0.0.1:6379> config get dir
    1) "dir"
    2) "/usr/local/redis/work"
    
    • 3.3删除rdb文件
    rm -rf /usr/local/redis/work/*
    
    • 3.4开启后没有任何key
    127.0.0.1:6379> config get save
    1) "save"
    2) ""
    127.0.0.1:6379> info keyspace
    # Keyspace
    
    • 3.5set一个key并保存重启
    27.0.0.1:6379> set k1 v1
    OK
    127.0.0.1:6379> get k1
    "v1"
    127.0.0.1:6379> save
    OK
    127.0.0.1:6379> set k2 v2
    OK
    127.0.0.1:6379> get k2
    "v2"
    127.0.0.1:6379> bgsave
    Background saving started
    # 在dir参数目录/usr/local/redis/work/下保存默认rdb文件dump.rdb
    # 重启后key存在,数据在save时被持久化
    127.0.0.1:6379> info keyspace
    # Keyspace
    db0:keys=2,expires=0,avg_ttl=0
    

    四.aof持久化

    清空所有keyflushall

    • 4.1打开aof,保持rdb关闭
    appendonly yes
    appendfilename "appendonly.aof"
    
    127.0.0.1:6379> config get appendonly
    1) "appendonly"
    2) "yes"
    
    
    • 4.2set后直接关闭
    127.0.0.1:6379> set k1 v1
    OK
    127.0.0.1:6379> set k2 v2
    OK
    127.0.0.1:6379> set k3 v3
    OK
    127.0.0.1:6379> shutdown
    
    • 4.3在目录下发现aof文件,重启后key值依然存在
    [root@haproxy01 work]# ls
    appendonly.aof  redis_3.140.log
    127.0.0.1:6379> mget k1 k2 k3
    1) "v1"
    2) "v2"
    3) "v3"
    

    五.持久化读取顺序

    • 5.1 直接读取rdb
    • 5.2 rdb存在先读rdb后读aoff
    • 5.3 rdb不存在则读取aof
    • 5.4 都不存在则以空数据库启动
  • 相关阅读:
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    白话之jsonp跨域原理分析
    crontab定时任务
    python模块之uuid
  • 原文地址:https://www.cnblogs.com/jenvid/p/10184490.html
Copyright © 2011-2022 走看看