- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
这个问题是关于Redis持久化的。
我将 Redis 用作社交网站的“快速后端”。这是一个单一的服务器设置。我一直在稳步地将 PostgreSQL 的职责转移到 Redis。目前在etc/redis/redis.conf
中,appendonly设置为appendonly no
。快照设置为 save 900 1
、save 300 10
、save 60 10000
。所有这一切对于生产和开发都是如此。根据生产日志,save 60 10000
被频繁调用。这是否意味着实际上,我每 60 秒获取一次备份?
一些文献建议同时使用 AOF 和 RDB 备份。因此,我正在权衡打开 appendonly on
并使用 appendfsync everysec
。对于硬币两面都有经验的任何人:
1) 使用appendonly on
和appendfsync everysec
会导致性能下降吗?会不会打CPU?写入负载偏高。
2) 一旦我使用这些新设置重新启动 redis 服务器,我仍然会丢失最后 60 秒的数据,对吗?
3) 重启时间是否值得担心?我的 dump.rdb
文件很小; ~90MB。
我正在尝试了解更多有关 redis 持久性的信息,并实现我的期望。就个人而言,我可以接受在发生灾难时丢失 60 秒的数据,因此我是否应该使用 AOF 也是我在考虑的问题。请随意插话。谢谢!
最佳答案
Does this mean that practically, I'm getting backups every 60 seconds?
否。 Redis 在 60 秒后进行后台保存,如果至少有 10000 个键被更改。否则,它不会进行后台保存。
Will using appendonly on and appendfsync everysec cause a performance downgrade? Will it hit the CPU? The write load is on the high side.
这取决于很多事情,例如磁盘性能(SSD VS HDD)、写入/读取负载(QPS)、数据模型等。您需要在特定环境中使用自己的数据进行基准测试。
Once I restart the redis server with these new settings, I'll still lose the last 60 secs of my data, correct?
否。如果同时开启AOF和RDB,当Redis重启时,会使用AOF文件重建数据库。由于您将其配置为 appendfsync everysec
,因此您只会丢失最后 1 秒 的数据。
Are restart times something to worry about? My dump.rdb file is small; ~90MB.
如果开启AOF,当Redis重启时,它会重放AOF文件中的日志来重建数据库。通常 AOF 文件比 RDB 文件大,并且它可能比从 RDB 文件恢复慢。你应该为此担心吗?在您的特定环境中使用您自己的数据进行基准测试。
编辑
重要通知
假设你已经设置Redis使用RDB保存,并向Redis写入大量数据。过了一段时间,你想开启AOF保存。 切勿修改配置文件以打开 AOF 并重新启动 REDIS,否则您将失去一切。
因为,一旦你在redis.conf中设置了appendonly yes
,然后重启Redis,它就会从AOF文件中加载数据,不管这个文件是否存在。如果该文件不存在,它会创建一个空文件,并尝试从该空文件加载数据。所以你会失去一切。
其实开启AOF并不需要重启Redis。相反,您可以使用 config set
命令动态打开它:config set appendonly yes
。
关于redis - Redis中的AOF和RDB备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39953542/
基本上我的情况是这样的: 1) 我最初在没有 AOF 的情况下启动了 Redis,并让它运行了 n 周。 2) 我决定要使用 AOF,所以我在 n+1 周后重启 Redis 并打开 AOF。 3) 我
AOF(Append Only File) 以日志的形式来记录每个写操作(增量保存) ,将 Redis 执行过的所有写指令记录下来 (读操作不记录), 只许追加文件但不可以改写文件 ,
一、AOF1、AOF 是什么以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,Redis启动之初会读取该文件重新构建数据,
我正在寻找备份Redis数据的最佳方法。 我读了有关RDB和AOF的文章。但是从我的 Angular 来看,最好的方法是按以下方式进行组合: 定期创建RDB,然后仅保存AOF。 这样,当您重新启动时。
我最近将 Redis 配置为使用 AOF 以及 RDB 快照。 但是,看起来 AOF 在服务器启动时没有正确重放。 我停止了服务。然后我使用 redis-check-aof 确保 /var/redis
今天为大家介绍Redis的另一种持久化策略——AOF。 什么是AOF 男孩“一觉醒来”忘记了对女孩子的承诺,这时候女孩子把曾经海誓山盟的录音逐条播放给男孩子听,帮助他“恢复记忆”。 “男孩
我的 Redis 实例显然已停止重写 AOF 文件(它已增长到许多 Gb)。更糟糕的是,它似乎停止为新的客户端连接提供服务(当使用 redis-cli 连接时,连接会通过,但随后它会在任何命令上卡住)
我已阅读 Redis 文档以找到标题的答案。但我找不到它。我想知道在集群节点迁移时如何操作RDB和AOF。 假设在同一个集群中有2个节点。(A节点,B节点)* RDB、AOF选项开启。 如果A的一些数
我正在使用 Redis 2.8.4。仅在配置中启用附加。根据我的要求,它工作正常,但这个文件可能会变得越来越大,因此将来可能会造成内存不足?有什么解决办法吗? 最佳答案 Redis 有一种方法可以通过
本文已经收录进 JavaGuide (「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。) Redis 持久化机制属于后端面试超高频的面试知识点,老
一、Redis 持久化简介 Redis 的持久化功能是区别于 Memcached 显著特性,数据持久化可以保证系统在发生宕机和重启后数据不会丢失,对于 redis 这种存储在内存中的数据库显得尤为重要
我正在尝试在具有以下配置的 Redis 中使用混合持久性(RDB + AOF 作为尾部): aof-use-rdb-preamble yes appendonly yes save 10 1 # 或
是否有一个配置选项可以防止 Redis 在“变得太大”时重写 AOF 日志? 最佳答案 来自 redis.conf : # Specify a percentage of zero in order
我们在生产中使用 6 GB 数据大小的 redis 服务器,最初我们认为 Redis 只能用作内存缓存,如果它重新启动,那么我们可以从持久性数据存储中重新填充,停机时间最短。 现在我们意识到从持久性存
背景 昨天我们的机器意外崩溃,Redis 的 AOF 文件损坏了。 尝试使用 sudo systemctl start redis-server 启动服务时我们收到以下日志: Bad file for
如何彻底禁用RDB和AOF?我不关心持久性,只希望它在内存中。 我已经注释掉了: #save 900 1 #save 300 10 #save 60 10000 但这没有帮助,我看到 Redis 仍在
有没有办法将 AOF 文件保存在 Amazon S3 上而不是存储在本地? 这将避免用完大型数据集的磁盘空间。 最佳答案 您可以将 S3 挂载为盘符(例如:TntDrive)并设置 Redis 写入该
我正在读这个article关于 Tarantool,他们似乎说 AOF 和 WAL 日志的工作方式不同。 Tarantool: besides snapshots, it has a full-sca
如何在 Windows 上的 Redis 中启用 AOF? 我想将数据写入磁盘,以便在服务器重新启动后再次使用它。 在我试过的 .php 文件中: $redis->bgRewriteAOF(); 在r
对 Redis 有点陌生。 假设设置/情况:假设 Redis 每 10 分钟做一次快照。 AOF 关闭。你有一个名为“帖子”的集合,它保存帖子的 ID。您还有 MySQL 表来保存帖子的 ID。 My
我是一名优秀的程序员,十分优秀!