前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis的持久化-RDB

Redis的持久化-RDB

作者头像
老七Linux
发布2018-05-09 17:05:37
1.3K1
发布2018-05-09 17:05:37
举报

Redis优秀的性能是由于其将所有的数据都存储在内存中,同样memcached也是这样做的,但是为什么Redis能够脱颖而出呢,很大程度上是因为Redis有出色的持久化机制,能够保证服务器重启后,数据不会丢失。下面来看看Redis是如何持久化的。

Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。这两种方式可以单独使用其中一种,或者混合使用。

RDB方式介绍

RDB方式是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照,并且存储到硬盘上。就像拍照一样,将这一瞬间的所有东西都保存下来。进行快照的条件在配置文件中指定。主要有两个参数构成:时间和改动的键值的个数,即当在指定时间内被更改的键的个数大于执行数值时,就会进行快照。RDB是Redis的默认持久化方式。

RDB方式配置

找到Redis的配置文件:redis.conf

1) 设置触发条件:

2) 设置rdb文件路径

默认rdb文件存放路径是当前目录,文件名是:dump.rdb。可以在配置文件中修改路径和文件名,分别是dir和dbfilename

Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存,一般情况下1GB的快照文件载入到内存的时间大约20-30分钟。 RDB如何进行快照

RDB的快照过程:

1) Redis使用fork函数复制一份当前进程(父进程)的副本;

2) 父进程继续接受并处理客户端发来的命令,而子进程开始将内存中的数据写入到硬盘中的临时文件;

3) 当子进程写入完成所有数据后会用该临时文件替换旧的RDB文件。

手动快照:

如果没有触发自动快照,可以对redis进行手动快照操作,SAVE和BGSAVE都可以执行手动快照,两个命令的区别是前者是由主进程进行快照操作,会阻塞其他请求;而后者是通过fork子进程进行快照操作。

注意:

由于redis使用fork来复制一份当前进程,那么子进程就会占有和主进程一样的内存资源,比如说主进程8G内存,那么在备份的时候必须保证有16G内存,要不然会启用虚拟内存,性能非常差。 RDB文件的压缩

RDB文件过大时,是可以压缩的,Redis默认开启压缩,当然也可以通过配置rdbcompression参数来禁用压缩。

压缩和不压缩的优缺点:

压缩:

代码语言:javascript
复制
优点:减少磁盘存储空间
缺点:消耗CPU资源

不压缩:

代码语言:javascript
复制
优点:不消耗CPU资源
缺点:占用磁盘空间多

如何选择? 那就需要看需求、看服务器资源情况了。

关于RedisRDB方式持久化就介绍到这,下一篇将介绍AOF方式怎么进行持久化,并且对比两种方式有何优缺。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016/10/21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档