redis目前有成熟的持久化方案吗?

作为内存数据库,REDIS目前有没有成熟的持久化方案,如果量大的话,不能都用内存是吧,另外大家一般都用哪些nosql啊,比如mongodb, ssdb, cassandra,es等,使用得多吗?谢谢。

参与12

2同行回答

陈灿东陈灿东系统运维工程师北京优特捷信息技术有限公司
redis目前成熟的持久化方案就是 aof 和rdb,无他如果很有钱多大的量也可以用内存堆起来显示全部

redis目前成熟的持久化方案就是 aof 和rdb,无他
如果很有钱多大的量也可以用内存堆起来

收起
互联网服务 · 2019-10-14
浏览1642
wangweilongwangweilong数据库管理员某大
redis目前支持两种数据持久化(备份)方式:第一种是通过rdb文件实现备份第二种使用aof文件实现备份1、rdb备份(高效,有数据丢失)redis服务默认的自动备份方式,在服务启动时,就会自动从dump.rdb文件中去加载数据。有自动和手动两种方式:自动备份方式:修改配置文件redis.conf:save 900...显示全部

redis目前支持两种数据持久化(备份)方式:
第一种是通过rdb文件实现备份
第二种使用aof文件实现备份

1、rdb备份(高效,有数据丢失)
redis服务默认的自动备份方式,在服务启动时,就会自动从dump.rdb文件中去加载数据。
有自动和手动两种方式:
自动备份方式:
修改配置文件redis.conf:
save 900 1
save 300 10
save 60 10000 //每60秒检测,超过10000个键被更改则使用bgsave命令进行快照
dir /usr/local/redisdata/ # 备份文件存储路径,磁盘满的情况下,可以通过config set在线更改路径,执行执行bgsave命令
dbfilename dump.rdb # 指定快照文件名

手工备份,直接执行命令:
SAVE //已经废弃,使用主进程将当前数据库快照到dump文件,会阻塞主进程
BGSAVE //主进程会fork一个子进程来进行快照备份

恢复:
关闭服务,将原备份文件拷贝回save备份目录
启动
redis-server /usr/local/redis/redis.conf
登录查看数据是否恢复

2、aof备份(实时持久化,保持数据完整性)
AOF即Append-only file
服务会将每个收到的写命令通过write函数追加到文件中。
redis服务默认是关闭aof。
开启:
修改配置redis.conf:
appendonly yes
appendfilename appendonly.aof
dir /usr/local/redisdata/
或者执行config set appendonly yes

AOF是备份所有的历史记录以及执行过的命令,和mysql binlog很相似,在恢复时就是重新执次一次之前执行的命令。
1、所有写入命令追加到aof_buff中
2、aof缓冲区根据对应的同步策略向硬盘同步
3、定期对aof文件进行重写,达到压缩的目的
4、redis重启时,加载aof文件进行恢复

aof_buff同步策略三选一:
appendfsync always //收到写命令后就立即写入磁盘,效率最差,数据丢失最少,一般的sata盘只能支持几百的QPS
appendfsync everysec //默认配置,每秒写入磁盘一次,效率与效果居中,理论上宕机丢失1秒(其实是最多两秒)的数据
appendfsync no //完全依赖OS,效率最佳,数据没法保证.

另外,目前redis没有实现数据的冷热分离,所有的数据都是存放在内存中。有些大厂已经开始研究和实践redis+某种高性能存储引擎+ssd的方式实现冷热分离,以降低纯内存的成本,但是目前都还不太成熟。

nosql根据不同的用途,有不同的适用场景,你说的这几种都比较流行,比如redis做缓存,mongodb做文档存储,cassandra做大数据分析,es做日志分析搜索等。

收起
互联网服务 · 2019-04-24
浏览2091

提问者

gp4715
gp47150417
数据库架构师某小型城商行
擅长领域: 云计算数据库容器

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2019-04-24
  • 关注会员:3 人
  • 问题浏览:3223
  • 最近回答:2019-10-14
  • X社区推广