这取决于你想要什么。内存中的地图会更快;数据到期并不是真正的问题(参见:Google Guava的 地图制作工具 ,它可以创建一个在读取和/或写入后使条目过期的映射,让我们不要忘记这样的事情 OSCache的 和 的EHCache ,更不用说分布式的东西了 GigaSpaces XAP 要么 相干性 )。
缓存项目(XAP,OSCache,EhCache,Coherence等)可以分发缓存条目,因此您可以获得自然的分片和其他设施; Coherence可以管理事务和直写,XAP实际上设计用作记录系统(写入它的同步和复制,这样你就可以使用内存数据网格作为实际的数据存储机制而不是使用数据库。)
Memcached是......好吧,你可以从一系列机器上访问一个memcached服务器实例。 Memcached作为API只是一个键/值存储,而分发是 完全 在客户端完成。我猜,它肯定有了基础知识,而且肯定有多种语言API,但它确实非常柔软。
(顺便说一句,GigaSpaces有一个Memcached层,所以你 可以 理论上使用memcached作为记录系统...)
我刚刚在并发哈希映射,memcached和MySQL之间做了一个基准测试。
结果如下:
键入Insert Lookup Remove
ConcurrentHashMap 264ms 93ms 82ms
Memcached 6549ms 5976ms 4900ms
Mysql 55754ms 26002ms 57899ms
线程池用于此基准测试。
可在此处找到更多信息: http://www.incentergy.de/2013/12/big-data-architecture-patterns-for-performance/
此外,以下缓存可能是memcached的替代方法: https://code.google.com/p/kitty-cache/
Java内存优于memcache的优点:
memcache优于Java内存的优点: