可持久保存到磁盘的 memcached 替代方案

2024-01-02

我目前正在我的 java 应用程序中使用 memcached,总体来说它运行良好。

memcached 对我来说最重要的功能是:

  • 它很快,因为读取和写入都在内存中并且不接触磁盘
  • 它只是一个键/值存储(因为这是我的应用程序所需的全部)
  • 它是分布式的
  • 它通过让每个对象都位于一台服务器上来有效地使用内存
  • 它不假设对象来自数据库(因为我的对象不是数据库对象)

然而,有一件事情我想做而 memcached 做不到。我想定期(也许每天一次)将缓存内容保存到磁盘。我希望能够从保存的磁盘映像恢复缓存。

磁盘保存不需要非常复杂。如果在保存时添加新的键/值,我不在乎它是否包含在保存中。如果在保存时修改了现有的键/值,则保存的值应该是旧值或新值,但我不在乎是哪一个。

任何人都可以推荐另一个缓存解决方案(免费或商业),它具有对我来说很重要的所有(或很大一部分)memcached 功能,并且还允许从磁盘保存和恢复整个缓存的能力?


我从来没有尝试过,但是怎么样redis http://redis.io/ ?
它的主页说(引用):

Redis 是一个键值数据库。这是 与memcached类似,但数据集 不是易失性的,并且值可以是 字符串,就像在 memcached 中一样, 而且还具有原子性的列表和集合 推送/弹出元素的操作。

为了非常快但在 同时持久化整个数据集 被记在记忆中,并且时不时地 时间和/或发生多次变化时 对数据集执行的是 异步写入磁盘。你 可能会丢失最后几个查询 在许多应用中可以接受,但它 与内存数据库(Redis 支持非阻塞主从 复制以解决这个问题 冗余问题)。

它似乎回答了您谈到的一些观点,所以也许对您的情况有帮助?

如果你尝试一下,我对你发现的东西非常感兴趣,顺便说一句;-)


作为旁注:如果您需要将所有这些写入磁盘,也许cache系统并不是您真正需要的...毕竟,如果您使用 memcached 作为cache,您应该能够在必要时按需重新填充它——不过,我承认,如果整个 memcached 集群立即崩溃,可能会出现一些性能问题......

那么,也许一些“更多”的面向键/值存储的软件可以提供帮助?就像是CouchDB http://couchdb.apache.org/, 例如?
它可能不会像 memcached 那么快,因为数据不是存储在 RAM 中,而是存储在磁盘上......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可持久保存到磁盘的 memcached 替代方案 的相关文章

随机推荐