reids-RDB(Redis DataBase)持久化使用方法

本文详细解释了Redis为何需要持久化,介绍了RDB(RedisDatabase)快照的触发机制、优点和缺点,以及与bgsave命令的对比。同时讨论了RDB对大规模数据恢复和数据完整性的影响以及可能的内存占用问题。
摘要由CSDN通过智能技术生成

一,为什么要使用Redis持久化

  Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能!

二,什么是RDB(Redis DataBase)

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程
都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。
这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那
RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。我们默认的就是
RDB,一般情况下不需要修改这个配置!

有时候在生产环境我们会将这个文件进行备份!

rdb保存的文件是dump.rdb 都是在我们的配置文件中快照中进行配置的!
在这里插入图片描述

三 ,触发机制

1、save的规则满足的情况下,会自动触发rdb规则
2、执行 flushall 命令,也会触发我们的rdb规则!
3、退出redis,也会产生 rdb 文件!
备份就自动生成一个 dump.rdb

四,bgsave和save对比

命令savebgsave
IO类型同步异步
阻塞?是(阻塞发生在fock(),通常非常快)
复杂度O(n)O(n)
优点不会消耗额外的内存不阻塞客户端命令
缺点阻塞客户端命令需要fock子进程,消耗内存

五,优缺点

优点:

1、适合大规模的数据恢复!
2、对数据的完整性要不高!

缺点:

1、需要一定的时间间隔进程操作!如果redis意外宕机了,这个最后一次修改数据就没有的了!
2、fork进程的时候,会占用一定的内容空间

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot中设置RedisRDB持久化,需要在application.properties或application.yml文件中添加以下属性: ``` spring.redis.host=yourRedisHost spring.redis.password=yourRedisPassword spring.redis.port=yourRedisPort spring.redis.database=yourRedisDatabase spring.redis.jedis.pool.max-active=8 spring.redis.jedis.pool.max-wait=-1 spring.redis.jedis.pool.max-idle=8 spring.redis.jedis.pool.min-idle=0 spring.redis.timeout=30000 spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.max-wait=-1ms spring.redis.lettuce.pool.max-idle=8 spring.redis.lettuce.pool.min-idle=0 spring.redis.jedis.pool.config=testOnBorrow=true,testOnReturn=true,testOnCreate=true spring.redis.lettuce.pool.config.testOnBorrow=true,testOnReturn=true,testOnCreate=true spring.redis.lettuce.shutdown-timeout=200ms spring.redis.lettuce.pool.enabled=true spring.redis.cluster.nodes=yourRedisClusterNodes spring.redis.cluster.max-redirects=5 spring.redis.sentinel.master=yourRedisSentinelMaster spring.redis.sentinel.nodes=yourRedisSentinelNodes spring.redis.sentinel.password=yourRedisSentinelPassword spring.redis.sentinel.pool.max-active=8 spring.redis.sentinel.pool.max-wait=-1ms spring.redis.sentinel.pool.max-idle=8 spring.redis.sentinel.pool.min-idle=0 ``` 其中,`spring.redis.database`定义了使用数据库编号,`spring.redis.host`和`spring.redis.port`定义了Redis服务器的主机名和端口号,`spring.redis.password`定义了连接Redis服务器时使用的密码。关于RDB持久化,需要在redis.conf配置文件中设置`save`指令,例如: ``` save 900 1 save 300 10 save 60 10000 ``` 该指令规定了当900秒内,有至少1个键被修改,Redis才会执行一次快照;当300秒内有至少10个键被修改时,Redis才会执行一次快照;当60秒内有至少10000个键被修改时,Redis才会执行一次快照。在此之前的所有修改都将保存在内存中,不过也可以通过`BGSAVE`命令手动执行快照。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值