我目前正在我的 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(使用前将#替换为@)