JCS的学习与应用四:索引式硬盘缓冲

来源:互联网 发布:mac清楚最近使用记录 编辑:程序博客网 时间:2024/05/19 04:56

非常感谢 http://blog.csdn.net/lfsfxy9/article/details/22696459

 索引式硬盘缓冲,作为内存缓存的一个辅助,它主要的目的提供一个二级缓存,从而降低缓存对内存的压力。当内存缓存超出了最大值时,缓存处理会检查看是否为存储区配置了”disk”类型的备用缓存,如果使用了被索引的磁盘备用缓存,缓存中心会把从内存中删除的缓存项目保存到磁盘。


       这个就是我们经常要用到的,为了避免服务器的内存溢出,同时保证但内存缓存区超过限制时,缓存的内容不丢弃。只需要指定缓冲临时文件的存放目录位置。硬盘缓冲将缓冲对象的内容写到文件上,但是将访问索引保存在内存中,因此也能够达到尽可能高的访问效率。


       这种硬盘缓存又分为两种。 一是并行式的分布缓冲(Lateral), 通常,将对象缓冲在内存中,一方面提高了应用的性能,而另一方面却使得应用不可以分布式发布。场景假设:一个应用配置在两台服务器上并行运行,而两台服务器单独缓冲,则很容易导致两个缓冲区内容出现版本上的不一致而出错。一个机器上修改了数据,这个动作会影响到本地内存缓冲区和数据库服务器,但是却不会通知到另一台服务器,导致另一台上缓冲的数据实际上已经无效了。 


     并行式的分布缓冲可以解决分布式缓存不同步更新的问题,今天只介绍一下单机硬盘缓存示例:


配置文件:
# CACHE REGIONS ,这里需要把硬盘缓存DC配置到此
jcs.region.testCache1=DC
jcs.region.testCache1.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.testCache1.cacheattributes.MaxObjects=10
jcs.region.testCache1.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache

# AUXILIARY CACHES
# Indexed Disk Cache
jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DC.attributes.DiskPath=d:/dev/jcs/raf
# 在内存中与磁盘缓存对象所对应的个数
jcs.auxiliary.DC.attributes.MaxPurgatorySize=10000
# 设置key文件中缓冲对象个数
jcs.auxiliary.DC.attributes.MaxKeySize=10000
# 删除处理的次数超过300000后对数据文件进行整理
jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=300000
jcs.auxiliary.DC.attributes.OptimizeOnShutdown=true
# 保留key文件中已在data文件被删除对象的个数,需要符合内存算法
jcs.auxiliary.DC.attributes.MaxRecycleBinSize=7500


      硬盘缓存文件:
       

      运行测试代码,如果对testCache1区域缓存1000个数据对象,超过缓存配置(MaxObjects=10)的对象即缓存到硬盘缓冲文件中,对缓存对象进行删除等操作,还可以通过配置来自动整合数据文件等等。


参考:
  1. Java缓存技术介绍(JCS开源项目)-----索引磁盘备用缓存
  2. JCS配置

0 0
原创粉丝点击