乐趣区

redis持久化

## # Redis 持久化介绍

所有的数据都存在内存中,从内存当中同步到硬盘上,这个过程叫做持久化过程。持久化操作,两种方式:rdb 方式、aof 方式,可以单独使用或者结合使用。

rdb 持久化方法:在指定的时间间隔写入硬盘  aof 方式:将以日志,记录每一个操作,服务器启动后就构建数据库。

RDB 方式 Redis 是默认支持的

优势:只有一个文件,时间间隔的数据,可以归档为一个文件,方便压缩转移(就一个文件)

## #Redis 的持久化之 RDB 方式 **

劣势:如果宕机,数据损失比较大,因为它是每一个时间段进行持久化操作的。也就是积攒的数据比较多,一旦懵逼,就彻底懵逼了

[root@hdp-01 redis]# vi redis.conf

往下拉:

这里 save 900 1 表示 每 900 秒内至少有 1 个 kery 发生变化 就持久化

save 300 10 表示 每 300 秒内至少有 10 个 key 发生变化 就持久化

save 60 10000 表示 每 60 秒内至少有 10000 个 key 发生变化 就持久化

再往下拉

这里有个 dbfilename 配置 是保存的持久化的文件名 默认是 dump.rdb

dir ./ 表示文件存储路径是当前路径

退出

[root@hdp-01 redis]# ll 总用量 64drwxr-xr-x. 2 root root   134 9 月   1 16:30 bin-rw-r–r–. 1 root root   109 9 月   1 17:30dump.rdb-rw-r–r–. 1 root root 58767 9 月   3 07:04 redis.conf

当前路径里确实是有这个文件的

## # RDB 备份和恢复数据

假如遇到断电或者宕机或者自然灾害 需要恢复数据 我们模拟下 先重置下数据

shutdown 关闭下 redis

127.0.0.1:6379> shutdown

not connected> exit

[root@hdp-01redis]# ll

总用量 52

drwxr-xr-x. 2 root root   bin-rw-r–r–. 1 root root  dump.rdb-rw-r–r–. 1 root root  redis.conf

删掉 rdb 文件 再启动 redis  这时候启动 是没数据的

[root@hdp-01]# rm -rf dump.rdb [root@hdp-01redis]# ./bin/redis-server ./redis.conf [root@hdp-01redis]# ./bin/redis-cli127.0.0.1:6379> keys *(empty list or set)

搞几个 key 然后 shutdown save 保存退出

[url=]

[/url]
127.0.0.1:6379> set n1 1OK127.0.0.1:6379> set n2 2OK127.0.0.1:6379> set n3 3OK127.0.0.1:6379> shutdown savenot connected> exit[url=]

[/url]

假如这时候 我们再重启 redis 这时候启动过程会进程 rdb check 验证 然后加载 redis 目录下 rdb 文件 加载数据

验证下:我们再次启动

[url=]

[/url]
[root@hdp-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *1) “n1″2) “n3″3) “n2″[url=]

[/url]

说明是数据加载进来了

这里我们把 redis 下的 rdb 文件剪切到其他地方去 然后再启动试下

[root@hdp-01 redis]# mv dump.rdb /root/

剪切到 root 下

这时候再启动下

[root@hdp-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *(empty list or set)

发现所有数据都没了 恢复数据的话 我们只需要把备份文件搞到 redis 下即可

[url=]

[/url]
[root@hdp-01 redis]# cp /root/dump.rdb /usr/local/redis/cp:是否覆盖 ”/usr/local/redis/dump.rdb”?y[root@hdp-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *1) “n2″2) “n1″3) “n3″[url=]

[/url]

## #Redis 的持久化之 AOF 方式 **

AOF 方式:将以日志,记录每一个操作

优势:安全性相对 RDB 方式高很多

劣势:效率相对 RDB 方式低很多

## # AOF 备份和恢复数据

AOF 方式:将以日志,记录每一个操作

优势:安全性相对 RDB 方式高很多;劣势:效率相对 RDB 方式低很多;

配置:

[root@hdp-01 redis]# vi redis.conf

编辑 redis.conf

appendonly no 默认关闭 aof 方式 我们修改成 yes 就开启

下面那个是默认的 aof 文件名

再往下拉:

这里是三种同步策略:

always 是 只要发生修改 立即同步(推荐实用 安全性最高)

everysec 是 每秒同步一次

no 是不同步

修改成 always

重新启动 redis 随便加几个 key

这里就有一个 appendonly.aof 文件

重置数据

[root@hdp-01 redis]# rm -rf dump.rdb

启动 redis

[root@hdp-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *(empty list or set)

目前数据库是空 添加数据

[url=]

[/url]
127.0.0.1:6379> set n1 1OK127.0.0.1:6379> set n2 2OK127.0.0.1:6379> set n3 3OK127.0.0.1:6379> shutdown nosavenot connected> exit[url=]

[/url]

把 aof 文件剪切到其他地方 启动

[root@hdo-01 redis]# mv appendonly.aof /root/[root@hdo-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *(empty list or set)

我们再把 aof 文件复制回来

[url=]

[/url]
[root@hdp-01 redis]# cp /root/appendonly.aof /usr/local/redis/cp:是否覆盖 ”/usr/local/redis/appendonly.aof”?y[root@hdp-01 redis]# ./bin/redis-server ./redis.conf [root@hdp-01 redis]# ./bin/redis-cli127.0.0.1:6379> keys *1) “n1″2) “n3″3) “n2″[url=]

[/url]

退出移动版