Redis持久化之RDB演示

一. 前言

​ 由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库要快的多(内存的读写效率远远大于硬盘的读写效率)。但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。

为了解决这个缺点,Redis提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能。Redis 支持两种形式的持久化,一种是RDB快照(snapshotting),另外一种是AOF(append-only-file)。下面将对RDB持久化进行演示。

二.RDB演示

首先,找到redis的安装目录,找到redis.conf文件

在命令行窗口下将其复制到/opt/myconf目录下(如果没有myconf目录,就创建一个:mkdir myconf)

复制指令

cp redis.conf /opt/myconf

效果:

接下来,为了配置文件的安全起见,在复制一份redis.conf到myconf下,取名为redis_rdb.conf

执行指令:

cp redis.conf redis_rdb.conf

前面的工作做好后,我们就要开始持久化操作了!

  1. 修改redis_rdb.conf文件

    vim redis_rdb.conf	//用vim编辑器打开
    
  2. 进行修改

    ①将里面的daemonize no 改成yes,表示将redis服务后台启动

    ②将里面的appendonly no 改错yes,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失

    ③为了演示修改快照的执行条件

    这里修改了第二行,表示50秒内,执行3次写操作(包括增删改),就执行一次快照保存

  3. 启动redis服务

     redis-server  redis_rdb.conf
    
  4. 执行写操作

    ①来到/usr/local/bin目录下

    连接redis服务:redis-cli

    ②写入7条数据,并退出

  5. 此时会发现myconf目录下多了一个dump.rdb文件(redis将内存快照写入dump.rdb文件中)

    然后将这个文件复制到/usr/local/bin目录下

    cp dump.rdb /usr/local/bin/dump_1919.rdb
    

    删除原来的dump.rdb,并将dump_1919.rdb改名为dump.rdb

    rm -rf dump.rdb				//删除
    mv dump_1919.rdb dump.rdb	//改名
    
  6. 重启redis服务

    redis-server redis_rdb.conf
    
  7. 连接服务并查看数据

    可以看到我们的数据正常恢复了,也就是说持久化操作成功了。

三.取消RDB持久化

有些情况下,我们只想利用redis的缓存功能,并不想使用redis的持久化功能,那么我们最好停掉RDB持久化。

①找到redis_rdb.conf文件,取消对(save “”)的注释

②通过命令修改

redis-cli config set save ""
四.RDB的优势和劣势

①、优势

  • RDB是一个非常紧凑(compact)的文件,它保存了redis 在某个时间点上的数据集。这种文件非常适合用于进行备份和灾难恢复。
  • 生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。
  • RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

②、劣势

  • RDB方式数据没办法做到实时持久化/秒级持久化。因为bgsave每次运行都要执行fork操作创建子进程,属于重量级操作,如果不采用压缩算法(内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑),频繁执行成本过高(影响性能)
  • RDB文件使用特定二进制格式保存,Redis版本演进过程中有多个格式的RDB版本,存在老版本Redis服务无法兼容新版RDB格式的问题(版本不兼容)
  • 在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值