首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis会持久化数据吗?

Redis会持久化数据吗?
EN

Stack Overflow用户
提问于 2014-08-15 22:31:07
回答 7查看 118.5K关注 0票数 169

我知道Redis为内存中的所有数据提供服务,但是它在服务器重新启动后仍然存在,这样当服务器重新启动时,它会将磁盘中的所有数据读取到内存中。或者它总是一个空白的商店,只在应用程序运行时存储数据,而没有持久性?

EN

回答 7

Stack Overflow用户

发布于 2014-08-15 22:35:08

我建议你在http://redis.io/topics/persistence上阅读这篇文章。基本上,当您仅使用内存中存储来提高性能时,您将失去保证的持久性。想象一下这样一种场景:您插入内存,但在它持久化到磁盘之前就断电了。将会有数据丢失。

Redis支持所谓的“快照”。这意味着它将在某些时间点(例如,每一整小时)对内存中的内容进行完整的复制。当您在两个快照之间断电时,您将丢失从上次快照到崩溃之间的时间的数据(不一定是断电)。Redis像大多数NoSQL- do一样,在数据安全性和性能之间进行权衡。

大多数NoSQL数据库遵循在多个节点之间复制的概念,以将这种风险降至最低。Redis被认为是一个更快的缓存,而不是一个保证数据一致性的数据库。因此,它的用例通常与实际数据库的用例不同:例如,您可以在其中存储会话、性能计数器或其他任何东西,具有无与伦比的性能,并且在崩溃的情况下没有实际损失。但是处理订单/购买历史记录等被认为是传统数据库的工作。

票数 114
EN

Stack Overflow用户

发布于 2014-08-15 22:40:48

Redis服务器会不时地将其所有数据保存到HDD中,从而提供一定程度的持久性。

它在以下情况之一中保存数据:

当您手动调用BGSAVE command

  • when

  • is

时,

  • 会不时自动关闭

但是redis中的数据并不是真正持久的,因为:

redis进程的

  • 崩溃意味着丢失自上次save
  • BGSAVE操作以来的所有更改,只有当您有足够的空闲内存(额外内存的大小等于redis DB的大小)时才能执行

注意: BGSAVE内存需求是一个真正的问题,因为redis会继续工作,直到没有更多的内存可供运行,但它停止将数据保存到硬盘的时间要早得多。RAM的50% )。

有关详细信息,请参阅Redis Persistence

票数 58
EN

Stack Overflow用户

发布于 2018-03-20 20:51:51

这是一个配置问题。你可以在Redis上不保存、部分保存或完全保存数据。最佳决策将由项目的技术和业务需求决定。

根据Redis documentation about persistence,您可以将实例设置为不时地将数据保存到磁盘中,或者在每次查询时保存数据。它们提供了两种策略/方法AOF和RDB (请阅读文档以了解详细信息),您可以单独使用或一起使用。

如果你想要一个“像SQL一样的持久性”,他们会说:

通常的指示是,如果您想要与PostgreSQL提供的数据安全性相媲美的数据安全性,则应该同时使用这两种持久性方法。

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25328317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档