我知道 Redis 提供内存中的所有数据,但它是否在服务器重新启动后仍然存在,以便在服务器重新启动时将磁盘中的所有数据读入内存。还是它始终是一个空白存储区,仅在应用程序运行时存储数据而没有持久性?
最佳答案
我建议您在 http://redis.io/topics/persistence 上阅读相关内容.基本上,当您仅通过使用内存存储来提高性能时,您就失去了持久性保证。想象这样一种场景,您将 INSERT 插入到内存中,但在它持久保存到磁盘之前就断电了。会有数据丢失。
Redis 支持所谓的“快照”。这意味着它将在某些时间点(例如,每整整一小时)对内存中的内容进行完整复制。当您在两次快照之间断电时,您将丢失从最后一次快照到崩溃之间的数据(不一定是断电..)。与大多数 NoSQL-DB 一样,Redis 在数据安全与性能之间进行权衡。
大多数 NoSQL 数据库都遵循在多个节点之间复制的概念,以最大限度地降低这种风险。 Redis被认为更像是一种快速缓存,而不是保证数据一致性的数据库。因此,它的用例通常不同于真实数据库的用例: 例如,您可以在其中存储 session 、性能计数器或任何具有无与伦比的性能并且在发生崩溃时没有真正损失的东西。但处理订单/购买历史等被认为是传统数据库的工作。
关于redis - Redis 是否持久化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25328317/