Redis 的虚拟内存(VM)机制是什么?

Sherwin.Wei Lv7

Redis 的虚拟内存(VM)机制是什么?

回答重点

Redis 的 VM 机制(Virtual Memory)曾经是 Redis 早期版本(2.0 之前)的一部分,用于将部分数据存储在磁盘上,以扩展内存数据库的容量。当内存不足时,Redis 会将冷数据(不经常访问的数据)移到磁盘,并将热数据(经常访问的数据)保留在内存中。

通过这种方式,Redis 可以处理比实际物理内存更多的数据。

虽然能使用的数据变多了,但是数据存到磁盘在获取会显著的使得性能下降!满足不了高并发的场景,因此 Redis 在 2.0 版本之后放弃了 VM 机制,转而推荐使用更高效的内存淘汰策略来管理内存。

详细的内存淘汰策略可以看面试鸭的《redis 的内存淘汰策略有哪些? 》这题。

抛弃 VM 具体原因如下:

  • 性能考虑:Redis 的设计初衷是作为一个高性能的内存数据库,频繁的磁盘 I/O 操作违背了这一目标。
  • 简化架构:去掉 VM 机制后,Redis 的架构变得更为简单,易于维护和优化。
  • 现代硬件的发展:随着内存价格的下降和容量的增加,服务器可以上更大的内存。

扩展知识

VM 工作原理(仅了解即可)

  1. 分页:Redis 将数据分成多个页面,每个页面的大小固定(默认为 4 KB)。
  2. 冷热数据区分:Redis 维护一个 LRU(Least Recently Used)列表,用于跟踪数据的访问频率。冷数据会被移动到磁盘,而热数据会保留在内存中。
  3. 交换数据:当 Redis 需要更多内存时,它会将冷数据页面写入磁盘,并在内存中释放这些页面。当需要访问这些数据时,Redis 会从磁盘读取相应页面并加载到内存中。
Comments