小纪专题

java动态缓存成长小纪(三)——缓存大小估算

我觉得对缓存认识,仅仅会写缓存及其淘汰算法是肤浅的、不负责任的。我们还需要决定,什么样的数据是需要进行缓存,多大的数据才能进行缓存。 首先,缓存数据往往是读取次数非常频繁的,但是底层数据不能更新太快,否则会导致缓存的“脏读”。我在一本书上看到的是读写比要大于10。 另外,缓存数据不能太大,缓存数据过大会大大占用JVM内存空间,同样不利于程序响应。 所以,在添加缓存之前,需要知道缓存规模

java动态缓存成长小纪(二)——缓存算法的实现:LRU、LFU、FIFO

缓存算法也叫作淘汰算法,主要是为了当JVM空间不足时,用来清理掉缓存的。那么要清理的话,我们先清理掉哪些缓存呢?按照正常人的思维,当然是接下来一段时间内不大可能用到的缓存啦!根据这个思路,我们需要做出一定的判断,判断的方法通常有3个,即LFU、LRU、FIFO。   还有个问题,什么时候进行清理?when? 我觉得一般可以设置一个阈值,标记最小剩余空间,是在插入时候检查JVM剩余空间。或者还

java动态缓存成长小纪(一)——创建一个简单的缓存

在实际项目中,我们经常会需要使用到缓存。一般来说,缓存介质是内存;而常见的DB将数据存储在硬盘中的;缓存读取是电脉冲,而硬盘读取是机械地读取转动的硬盘,速度差异是上百倍的。所以往往可以通过缓存,对经常用到的数据进行访问,以提高速度。         创建缓存实际上就是针对两个对象,1. Cache对象,即一个缓存对象;2. CacheManager对象,即一个管理不同缓存的对象,