当前位置:  开发笔记 > 编程语言 > 正文

拿起缓存实现,还是自己动手?

如何解决《拿起缓存实现,还是自己动手?》经验,为你挑选了2个好方法。

我正在做一个Java EE应用程序,而且我已经得出结论,我需要为我的对象提供缓存.

我目前的要求并不比某种键值存储复杂得多,可能是可以处理树的东西.编写一个包含一个或多个贴图的简单自定义静态/单例类很有诱惑力.但是,由于有几个实现或多或少都像这样(Memcached浮现在脑海中),我开始想知道使用Memcached必须有一些附加值,而不仅仅是我自己的实现.

所以,我想问一下这个问题:当我可以自己制作静态数据时,为什么要拿起现成的缓存呢?反之亦然; 当我可以拿起现成的缓存时,为什么要写一个静态类呢?



1> David Rabino..:

有许多缓存实现,包括开源和商业.关于编写正确的缓存有很多问题 - 离开对象的时间,驱逐策略,持久性,内存管理等等,所以我不会启动自己的一个(为什么重新发明轮子?)

看看以下实现之一:

的EHCache

OSCache的

JCS

JBossCache的

的JCache

有关更多信息,请访问http://java-source.net/open-source/cache-solutions


与许多事情一样,听起来现有缓存库的实现者已经考虑了很多你将遇到的问题.您应该至少阅读每个描述,以便在编写缓存时遇到问题,您将很容易识别它们,并且至少可以找到一个潜在的解决方案.

2> Andreas Pete..:

对于复杂对象图的许多情况,我使用单线程具有足够好的性能

new MapMaker().weakKeys().makeMap();

这会使用Google集合创建一个地图,可以用作复杂对象的缓存.

由于密钥很弱,并且最终超出范围,因此不太可能导致内存问题.

所以我会说简单的情况 - 不要打扰分布式缓存的"认知负载".序列化问题,延迟等.你不会想要处理那些.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有