redis的flushdb和flushall区别,大部分帖子都错了
所以,实际上并不是flushdb命令可以恢复,而是因为未达到触发存储rdb文件的条件,如果使用del key命令也是一样的,如果未达到rdb的保存条件,立即重启也是可以恢复redis数据的。网上很多文章说,flushdb删除当前库,但重启后可以恢复,这个恢复的前提是,未触发rdb保存条件。验证的redis版本:6.0.15、Windos为5版本。rdb保存条件在redis.conf配置文件中配置。
·
验证的redis版本:6.0.15、Windos为5版本
也许是在线上环境,进行集群redis的操作,需要进行删除key,但是以为一下防火墙问题,在出现重启redis的情况下,我发现使用删除key的命令不生效,于是去网上搜索,大部分帖子会说使用flushdb和flushall,并且列出他们的区别,flushdb不会永久删除,flushall会永久删除,这个结论是错误的。
redis是基于内存的中间件,但是也有自己的持久化操作,其持久化分为RDB(快照保存)和REF(基于文件追加的即时保存),默认的RDB(快照保存)的配置如下:
#redis.conf配置文件
#900秒内 若有一个1key发生变化就进行保存 可多设几个形成互补
save 900 1
#300秒内,若有1个Key发生变化,就进行rdb保存
save 300 10
- 单库删除:flushdb 清除当前数据库的数据(redis默认下标为0-15个数据库,默认为0,flushdb会删除当前为0的数据库),【不会立即删除rdb文件,直到触发上述的save条件,如果未触发条件,那么重启后会恢复数据】。(rdb的保存时间为900才会执行一次save)
- 多库删除:flushall会删除所有数据库,并执行持久化,立刻更新rdb快照文件。
所以,实际上并不是flushdb命令可以恢复,而是因为未达到触发存储rdb文件的条件,如果使用del key命令也是一样的,如果未达到rdb的保存条件,立即重启也是可以恢复redis数据的。
更多推荐
已为社区贡献1条内容
所有评论(0)