我知道Redis为内存中的所有数据提供服务,但是它在服务器重新启动后仍然存在,这样当服务器重新启动时,它会将磁盘中的所有数据读取到内存中。或者它总是一个空白的商店,只在应用程序运行时存储数据,而没有持久性?
发布于 2014-08-15 22:35:08
我建议你在http://redis.io/topics/persistence上阅读这篇文章。基本上,当您仅使用内存中存储来提高性能时,您将失去保证的持久性。想象一下这样一种场景:您插入内存,但在它持久化到磁盘之前就断电了。将会有数据丢失。
Redis支持所谓的“快照”。这意味着它将在某些时间点(例如,每一整小时)对内存中的内容进行完整的复制。当您在两个快照之间断电时,您将丢失从上次快照到崩溃之间的时间的数据(不一定是断电)。Redis像大多数NoSQL- do一样,在数据安全性和性能之间进行权衡。
大多数NoSQL数据库遵循在多个节点之间复制的概念,以将这种风险降至最低。Redis被认为是一个更快的缓存,而不是一个保证数据一致性的数据库。因此,它的用例通常与实际数据库的用例不同:例如,您可以在其中存储会话、性能计数器或其他任何东西,具有无与伦比的性能,并且在崩溃的情况下没有实际损失。但是处理订单/购买历史记录等被认为是传统数据库的工作。
发布于 2014-08-15 22:40:48
Redis服务器会不时地将其所有数据保存到HDD中,从而提供一定程度的持久性。
它在以下情况之一中保存数据:
当您手动调用BGSAVE command
时,
但是redis中的数据并不是真正持久的,因为:
redis进程的
BGSAVE操作以来的所有更改,只有当您有足够的空闲内存(额外内存的大小等于redis DB的大小)时才能执行注意: BGSAVE内存需求是一个真正的问题,因为redis会继续工作,直到没有更多的内存可供运行,但它停止将数据保存到硬盘的时间要早得多。RAM的50% )。
有关详细信息,请参阅Redis Persistence。
发布于 2018-03-20 20:51:51
这是一个配置问题。你可以在Redis上不保存、部分保存或完全保存数据。最佳决策将由项目的技术和业务需求决定。
根据Redis documentation about persistence,您可以将实例设置为不时地将数据保存到磁盘中,或者在每次查询时保存数据。它们提供了两种策略/方法AOF和RDB (请阅读文档以了解详细信息),您可以单独使用或一起使用。
如果你想要一个“像SQL一样的持久性”,他们会说:
通常的指示是,如果您想要与PostgreSQL提供的数据安全性相媲美的数据安全性,则应该同时使用这两种持久性方法。
https://stackoverflow.com/questions/25328317
复制相似问题