维基百科称 Redis是一个内存数据库,但它也表示它可以至少每2秒将"数据保存到磁盘上".我觉得这两件事是相互排斥的.如何在内存中考虑(它可以)将数据存储在磁盘上?我假设内存中的定义意味着它不存储到磁盘.
这是一个类似的问题:Redis概念:在内存还是数据库? 不同之处在于他在询问持久性实现.我的问题是关于内存与持久性的概念.
sui*_*ish 11
Redis是一个内存但持久的磁盘数据库,因此它代表了一种不同的折衷方案,其中通过不能大于内存的数据集的限制实现了非常高的写入和读取速度.内存数据库的另一个优点是,与磁盘上的相同数据结构相比,复杂数据结构的内存表示更易于操作,因此Redis可以做很多事情,内部复杂性很小.同时,两种磁盘存储格式(RDB和AOF)不需要适合随机访问,因此它们非常紧凑,并且始终以仅附加方式生成(即使AOF日志轮换也是附加的 - 仅操作,因为新版本是从内存中的数据副本生成的.
在redis中,所有数据都必须在内存中.当你访问和读取数据库中的某些数据时,这是与其他No-SQL的完全不同的点,你不知道数据是否在内存(缓存)中.但是Redis的情况,它是保证所有数据都在内存中.写入磁盘是您可以做的选项之一.这意味着内存上的数据是中继,磁盘上的数据是一种备份,因此如果您突然关闭服务器,可能会丢失上次保存到磁盘后保存的数据.
而且它的优势在于性能.由于所有数据都在RAM中,因此速度非常快.
它们并不相互排斥。内存中意味着所有数据都存储在内存中以供访问。这并不意味着不应该不时将它也存储到磁盘上,但绝对不应该从磁盘访问它,除非发生一些异常事件。读取数据时,可以从磁盘或内存中读取。在 Redis 的情况下,它总是从内存中检索(因此 - 内存数据库)。每两秒将数据写入磁盘对于在发生中断时进行备份非常有用。一方面,访问数据库的用户正在访问存储在内存中的数据,另一方面,备份机制从内存中访问数据并将其写入磁盘。如果系统出现故障,存储在内存中的数据将丢失。但是开机的时候