【发布时间】:2010-11-21 22:59:13
【问题描述】:
我目前正在将 memcached 与我的 java 应用程序一起使用,总的来说它运行良好。
memcached 对我来说最重要的特性是:
- 速度很快,因为读取和写入都在内存中,不会触及磁盘
- 它只是一个键/值存储(因为这就是我的应用程序所需要的全部)
- 已分发
- 它通过让每个对象恰好位于一台服务器上来有效地使用内存
- 它不假定对象来自数据库(因为我的对象不是数据库对象)
但是,我想做的一件事是 memcached 做不到的。我想定期(可能每天一次)将缓存内容保存到磁盘。我希望能够从保存的磁盘映像中恢复缓存。
磁盘保存不需要非常复杂。如果在保存时添加了新的键/值,我不在乎它是否包含在保存中。如果在保存时修改了现有键/值,则保存的值应该是旧值或新值,但我不在乎哪一个。
谁能推荐另一种缓存解决方案(免费或商业),它具有所有(或很大比例)对我很重要的 memcached 功能,并且还允许从磁盘保存和恢复整个缓存?
【问题讨论】:
-
只是好奇,为什么要保存内容并恢复回来?
-
感谢您的回复。我可能会先尝试 Redis,因为它最接近我的需要,但我需要做一些测试来验证它的稳健性。我们想做一个日常保存,我们几乎永远不会使用它。如果缓存被清除,我们只会从磁盘进行恢复,这可能只有在服务器重新启动时才会发生。从磁盘恢复比重新生成对象更可取,因为除了延迟之外,我们还会访问第三方服务器,并且在短时间内重新生成大量对象可能会导致我们超过第三方服务器的使用上限-派对服务器。
-
次要的 nitpick:memcache 并没有像通常使用的术语那样真正分布;它是分片的。分布通常意味着实例之间存在某种程度的协调,而 meccached 明确避免了这种协调。
-
@MikeW MIke,进展如何?我希望您对测试提供意见,因为我面临同样的情况。如果您可以分享您的测试结果以及您采取了哪些选择,那就太好了。谢谢。
标签: java caching persistence memcached distributed