栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis进阶使用(一)—— redis持久化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis进阶使用(一)—— redis持久化

简介

redis 提供了两种持久化的方式,分别是RDB(Redis Database)和AOF(Append only File)。

  • RDB,简而言之,就是在不同的时间点,将 redis 存储的数据生成快照并存储到磁盘等介质上;
  • AOF,则是换了一个角度来实现持久化,那就是将 redis 执行过的所有写指令记录下来,在下次 redis 重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。

其实 RDB 和 AOF 两种方式也可以同时使用,在这种情况下,如果 redis 重启的话,则会优先采用 AOF 方式来进行数据恢复,这是因为 AOF 方式的数据恢复完整度更高。

如果你没有数据持久化的需求,也完全可以关闭 RDB 和 AOF 方式,这样的话,redis 将变成一个纯内存数据库,就像 memcache 一样。

优点
  • rdb文件体积比较小, 适合备份及传输
  • 性能会比 aof 好(aof 需要写入日志到文件中)
  • rdb 恢复比 aof 要更快
缺点
  • 服务器故障时会丢失最后一次备份之后的数据
  • Redis 保存rdb时, fork子进程的这个操作期间, Redis服务会停止响应(一般是毫秒级),但如果数据量大且cpu时间紧张,则停止响应的时间可能长达1秒
redis持久化RDB

RDB 方式,是将 redis 某一时刻的数据持久化到磁盘中,是一种快照式的持久化方法。

redis 在进行数据持久化的过程中,会先将数据写入到一个临时文件中,待持久化过程都结束了,才会用这个临时文件替换上次持久化好的文件。正是这种特性,让我们可以随时来进行备份,因为快照文件总是完整可用的。

RBD持久化是把当前数据生成快照存到硬盘的过程,触发RBD持久化过程分为手动触发和自动触发

  • 手动触发: bgsave
  • 自动触发:(条件不满足的时候,如果执行了shutdown,自动会先执行bgsave,再执行shutdown)
手动触发: bgsave

bgsave 命令采用异步方式生成快照,Redis会fork出一个子进程进行RDB文件的生成。

Redis只有在fork子进程时被阻塞,子进程完成快照生成的同时,Redis可以正常工作。

[root@redis1 ~]# redis-cli -h 10.0.0.31 bgsave
Background saving started
#会自动生成一个rbd文件,这个路径是之前配置的本地数据库的目录,这个可以根据需求进行配置
[root@redis1 ~]# ll /data/redis_cluster/redis_6379/redis_6379.rdb 
-rw-r--r-- 1 root root 148025 10月 11 14:04 /data/redis_cluster/redis_6379/redis_6379.rdb
自动触发

最常见的使用RDB进行持久化的方式,是在配置文件中配置Redis进行快照保存的时机:

save [seconds] [changes]

Redis默认开启RDB快照,默认的RDB策略如下:

save 900 1
save 300 10
save 60 10000

进行配置

[root@redis1 conf]# vim /opt/redis_cluster/redis_6379/conf/redis_6379.conf 
###以守护进程模式启动
daemonize yes
###绑定的主机地址
bind 10.0.0.31
###监控端口
port 6379
###pid文件和log文件的保存地址
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
###设置数据库的数量,默认数据库为0
databases 16
###制定本地持久化文件的文件名,默认是dump.rdb
dbfilename redis_6379.rdb
###bgsave触发条件
save 900 1
save 300 10
save 60 10000
###本地数据库的目录
dir /data/redis_cluster/redis_6379

#进行重启启动服务
[root@redis1 conf]# redis-cli -h 10.0.0.31 shutdown
[root@redis1 conf]# redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf
#进行数据的写入,写入10000条数据
[root@redis1 conf]# ll /data/redis_cluster/redis_6379/
总用量 148
-rw-r--r-- 1 root root 148025 10月 11 14:13 redis_6379.rdb
[root@redis1 conf]# sh ~/for.sh
#有新的rbd文件自动生成,满足了条件,自动触发bgsave
[root@redis1 conf]# ll /data/redis_cluster/redis_6379/
总用量 148
-rw-r--r-- 1 root root 148025 10月 11 14:16 redis_6379.rdb

redis持久化 AOF

AOF持久化,以独立日志的方式记录每次写命令,重启时再执行AOF文件中的命令,打道回府数据的目的,AOF的主要作用是解决了数据持久化的实时性,目的已经是Redis持久化的主流方式

修改配置

[root@redis1 conf]# vim /opt/redis_cluster/redis_6379/conf/redis_6379.conf
###以守护进程模式启动
daemonize yes
###绑定的主机地址
bind 10.0.0.31
###监控端口
port 6379
###pid文件和log文件的保存地址
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
###设置数据库的数量,默认数据库为0
databases 16
###制定本地持久化文件的文件名,默认是dump.rdb
dbfilename redis_6379.rdb
###bgsave触发条件
save 900 1
save 300 10
save 60 10000
###本地数据库的目录
dir /data/redis_cluster/redis_6379
#打开AOF持久化日志功能
appendonly yes
#每1个命令,都立即同步到aof
appendfsync always
##每秒写1次
appendfsync everysec
#写入工作交给操作系统,由操作系统判断缓冲区的大小,统一写入aof
appendfsync no
appendfilename "appendonly.aof"

#进行重启
[root@redis1 conf]# redis-cli -h 10.0.0.31 shutdown
[root@redis1 conf]# redis-server redis_6379.conf 
[root@redis1 conf]# ll /data/redis_cluster/redis_6379/
总用量 596
-rw-r--r-- 1 root root 367811 10月 11 14:29 appendonly.aof
-rw-r--r-- 1 root root 147886 10月 11 14:29 redis_6379.rdb
[root@redis1 conf]# ll /data/redis_cluster/redis_6379/
总用量 596
-rw-r--r-- 1 root root 367811 10月 11 14:29 appendonly.aof
-rw-r--r-- 1 root root 147886 10月 11 14:29 redis_6379.rdb
#修改一个都会进行写入aof文件
[root@redis1 conf]# redis-cli -h 10.0.0.31 set key8 v8
OK
[root@redis1 conf]# ll /data/redis_cluster/redis_6379/
总用量 508
-rw-r--r-- 1 root root 367842 10月 11 14:30 appendonly.aof
-rw-r--r-- 1 root root 147886 10月 11 14:29 redis_6379.rdb

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315201.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号