- 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/
我想我的 redis 配置可能搞砸了。使用 nodeBB 我试图与 git 共享我的 .rdb 文件,因为我想在我的本地环境和我的服务器上共享数据。 在寻找 .rdb 文件的过程中,我执行了 redi
我需要转换SQL语句RDB$GET_CONTEXT和 RDB$SET_CONTEXT从 Firebird 到 Interbase,我应该使用什么? 这是完整的 Firebird SQL: if (rd
我在这里内部运行一个 Redis 数据库,想制作一个“快照的快照”。 什么鬼?是的。我想每天将 .rdb 文件移动到 S3 的存储桶中。此外,它应该是一个计划操作(可能使用 cronTab 函数)。
我使用的是 redis-server 版本 Redis 4.0.9 (00000000/0) 64 位。尝试从 Heroku Redis 中保存的 RDB 文件恢复数据时(Redis 版本合规性 5.
Redis 一旦服务器宕机,内存中的数据将全部丢失,从后端数据库恢复这些数据,对数据库压力很大,且性能肯定比不上从 Redis 中读取,会拖慢应用程序。所以,对 Redis 来说,实现数据的 持久化
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我的 redis rdb 文件的大小一直在增长,直到数据库变得不可操作并且连接被拒绝。我意识到这与某些配置设置有关 - 我使用的是默认配置文件。 有什么办法可以防止这种情况发生吗?我不关心持续备份。
我使用 Redis,并将其保存为 .rdb 文件(每笔交易)。 我注意到生产中的 .rdb 每天增长 15 MB(现在是 75 MB)。 .rdb 文件有限制吗?这对 Redis 数据库的性能有影响吗
在 MySQL 或 Oracle 等数据库中,索引是如何实现的?我认为常规索引存储为 B 树,但找不到有关在多列上建立索引的复合索引的任何信息。我正在寻找所使用的数据结构的名称,以便研究它们。 更一般
在典型的 RDB 中,我可以描述与外键的关系。但是,我不确定如何有效地描述组内关系。我知道这很难理解,所以让我描述一下这个场景。 我想做一个成绩册服务,教师可以注册和创建类(class),学生可以注册
上下文 我有一个实时运行的 redis 服务器。 我要备份。 想法: 我想做以下事情: cp dump.rdb ~/some-other-location/06-24-2012.rdb ? 关注 我没
我正在尝试运行查询来提取 Firebird 中所有列的元数据。它看起来像这样: select f.RDB$RELATION_NAME as tableName, f.RDB$F
我正在尝试运行查询来提取 Firebird 中所有列的元数据。它看起来像这样: select f.RDB$RELATION_NAME as tableName, f.RDB$F
我记得玩过一些设置,我相信它改变了 dump.rdb 的位置。现在,dump.rdb 自动神奇地出现在我项目的根目录中。 它属于哪里,我该如何将它放回那里?另外,这个位置在生产环境中如何变化? 最佳答
我已阅读 Redis 文档以找到标题的答案。但我找不到它。我想知道在集群节点迁移时如何操作RDB和AOF。 假设在同一个集群中有2个节点。(A节点,B节点)* RDB、AOF选项开启。 如果A的一些数
我正在使用 redis 2.6.9。目前,我不确定 dump.rdb 文件来自哪个版本的 redis(我正在尝试从另一台计算机复制 redis 信息 - 如果这不起作用,我将查看 slave 选项)。
很抱歉,如果这是一个重复的问题,但我已经在 stackoverflow 上搜索了几个小时,但找不到答案。 场景: 我更改了 Redis 的 dump.rdb 的默认目录,因为我的雇主希望它在特定目录中
我正在经历 Redis RDB 持久化。我对 RDB 持久性与其缺点有关有一些疑问。 到目前为止的理解: 当我们需要定期保存内存中当前数据集的快照时,我们应该使用 rdb 持久化。 我可以理解,如果服
过去 10 个月我一直在 Windows 服务器上使用 Redis,没有任何问题,但今天早上我检查了我的网站,发现它完全是空的!!! 经过几分钟的调查,我意识到 Redis 数据库是空的??? 幸运的
上下文 我正在使用 Redis。数据库 < 100 MB。 但是,我想每天备份一次。 我也在 Ubuntu Server 12.04 上运行 当输入时: redis-cli save 我不知道 dum
我是一名优秀的程序员,十分优秀!