美文网首页
Redis笔记(五)持久化

Redis笔记(五)持久化

作者: huyi0616 | 来源:发表于2017-03-06 13:11 被阅读164次

1. RDB持久化

两种持久化方式:

  • RDB 内存快照方式,类似与mysql的binlong
  • AOF

Redis多个数据库:

  • 一个redis内部默认有16个数据库,编号为0-15
  • 默认操作是编号为0的数据库
  • 可以通过select命令切换数据库
#切换为数据库2
select 2
#查看redis的数据库文件地址
127.0.0.1:6379> config get dir
1) "dir"
2) "/"
127.0.0.1:6379>

1.1 通过save命令实现持久化

  • 客户端发送save命令
  • 服务器收到save命令后,会阻塞客户端的请求

1.2 通过bgsave命令

  1. 可以在命令行触发
    • 命令行执行bgsave,立即触发执行
  2. 可以通过服务器端条件触发
    • save seconds ops 即:在seconds秒内发生ops次数就会触发RDB持久化操作
    • Save 900 1 代表900秒内有一次数据变更操作就触发持久化
    • 可以同时配置多条触发条件,如下图:
save的默认参数

1.3 RDB配置项

  • stop-writes-on-bgsave-error true 在bgsave执行出错时,阻止前面的请求,默认是true
  • Rdbcompression yes 是否对RDB文件进行压缩,默认是yes
  • rdbchecksum yes 是否对rdb文件进行校验,默认是yes

1.4 RDB还原

  • Redis会自动加载dump.rdb 文件

2. AOF持久化

  • AOF即Append Only File ,保存redis的执行命令来记录数据
  • 重新加载是,通过重放这些命令来实现数据的回复
  • 文件里面的目录是纯文本格式,可以直接打开查看
  • 整个过程中只有一个文件,通过重写技术缩减此文件的大小
  • 命令成功后才会写入AOF文件
graph LR
A((客户端))-->|发送命令|B[服务器]
B[服务器]-->|保存被执行的命令|C[AOF文件]

2.1 AOF配置

############################## APPEND ONLY MODE ###############################  
# 是否开启AOF,默认关闭(no)  
appendonly yes  
  
# 指定 AOF 文件名  
appendfilename appendonly.aof  
  
# Redis支持三种不同的刷写模式:  
# appendfsync always #每次收到写命令就立即强制写入磁盘,是最有保证的完全的持久化,但速度也是最慢的,一般不推荐使用。  
appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,是受推荐的方式。  
# appendfsync no     #完全依赖OS的写入,一般为30秒左右一次,性能最好但是持久化最没有保证,不被推荐。  
  
#在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成DISK IO上的冲突。  
#设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no  
no-appendfsync-on-rewrite no   
  
#当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程。  
auto-aof-rewrite-percentage 100  
  
#当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Reids时由于文件尺寸较小导致频繁的重写。  
auto-aof-rewrite-min-size 64mb

2.2 开启AOF

首先找到redis.conf配置文件

Paste_Image.png
  • 可以看到我的redis.conf在/etc/redis/6379.conf,打开配置文件,找到appendonly配置,默认是no,改为yes
Paste_Image.png
  • 修改dir目录,这个目录保存了rdb文件和aof文件的保存位置,默认是根目录,这个不太好,我改到了redis的安装目录,新建了redisdata文件
  • appendfsync 改为everysec 这是每秒钟强制写入磁盘一次的意思
  • 改好后保存6379.conf,并重启redis服务生效,打开redisdata目录就可以看到dump.rdb文件和appendonly.aof,至此,aof开启成功
Paste_Image.png

2.3 redis的AOF还原

  1. 设置appendonly yes;
  2. 将appendonly.aof放到dir参数指定的目录;
  3. 启动Redis,Redis会自动加载appendonly.aof文件。

到这里,Redis的持久化部分就完成了。

相关文章

  • 关于Redis持久化

    前言 好记性不如烂笔头,最近看了些关于redis持久化的文章,记一下笔记。 redis持久化方式 redis持久化...

  • Redis笔记(五)持久化

    1. RDB持久化 两种持久化方式: RDB 内存快照方式,类似与mysql的binlong AOF Redis多...

  • Redis笔记(五)- 持久化

    众所周知,redis是一种内存数据库,在服务重启的时候内存中的数据会全部丢失,既然redis作为nosql的佼佼者...

  • Redis-2 数据持久化及持久化配置

    一、数据持久化 开启持久化功能后,重启redis,数据会自动通过持久化文件恢复!! 1、redis持久化 – 两种...

  • Redis之持久化

    参考 深入学习Redis(2):持久化 转载自icyfire-Redis持久化 Redis有两种持久化的方式:快照...

  • 关于redis的几件小事(六)redis的持久化

    1.redis持久化的意义 redis持久化的意义,在于 故障恢复 。如果没有对数据进行持久化,那么如果redis...

  • NoSQL二--Redis

    目录 一、Redis介绍二、安装Redis三、Redis 持久化四、Redis 的数据类型五、Redis常用操作六...

  • Redis持久化

    Redis持久化 RDB (Redis DataBase) AOF(Append only file) 持久化的两...

  • Redis持久化策略(看这篇,你肯定会有所获)

    今天学习总结下redis 的持久化策略. Redis 持久化策略 RDB:Redis DataBase , 记录快...

  • redis笔记(四)redis持久化

    redis持久化 Redis持久化机制:redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中...

网友评论

      本文标题:Redis笔记(五)持久化

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