我对 Redis 比较陌生,在使用它之前,我想了解一些重要的(对我而言)细节。所以....
Redis 使用 RAM 和 HDD 来存储数据。RAM用作快速读/写存储,HDD用于使这些数据持久化。当 Redis 启动时,它会将所有数据从 HDD 加载到 RAM,还是仅将经常查询的数据加载到 RAM?如果我在 HDD 上有 500Mb Redis 存储,但我只有 100Mb 或 RAM 用于 Redis,该怎么办。我在哪里可以读到它?
我对 Redis 比较陌生,在使用它之前,我想了解一些重要的(对我而言)细节。所以....
Redis 使用 RAM 和 HDD 来存储数据。RAM用作快速读/写存储,HDD用于使这些数据持久化。当 Redis 启动时,它会将所有数据从 HDD 加载到 RAM,还是仅将经常查询的数据加载到 RAM?如果我在 HDD 上有 500Mb Redis 存储,但我只有 100Mb 或 RAM 用于 Redis,该怎么办。我在哪里可以读到它?
Redis 将所有内容加载到 RAM 中。所有数据都写入磁盘,但只会在重新启动服务器或进行备份等操作时读取。
不过,有几种方法可以用比数据更少的 RAM 来使用它。您可以将它与 MySQL 或其他基于磁盘的存储结合使用,以像 memcached 一样工作 - 您可以手动管理缓存未命中和持久性。
Redis 有一个 VM 模式,其中所有键都必须适合 RAM,但不经常访问的数据可以在磁盘上。但是,我不确定这是否在稳定版本中。
最近的版本 (>2.0) 有了显着改进,内存管理更加高效。请参阅解释如何使用哈希优化 RAM 内存占用的博客文章:http: //antirez.com/post/redis-weekly-update-7.html
该功能称为虚拟内存,已正式弃用
Redis VM 现已弃用。Redis 2.4 将是具有虚拟内存的最新 Redis 版本(但它也警告您不鼓励使用虚拟内存)。我们发现使用 VM 有几个缺点和问题。在 Redis 的未来,我们只想提供有史以来最好的内存数据库(但像往常一样持久保存在磁盘上),至少目前不考虑对大于 RAM 的数据库的支持。我们未来的工作重点是提供脚本、集群和更好的持久性。
有关 VM 的更多信息:https ://redis.io/topics/virtual-memory