1. package com.thinkgem.jeesite.common.utils;
  2.  
  3. import net.sf.ehcache.Cache;
  4. import net.sf.ehcache.CacheManager;
  5. import net.sf.ehcache.Element;
  6.  
  7. /**
  8. * Cache工具类
  9. * @author ThinkGem
  10. * @version 2013-5-29
  11. */
  12. public class CacheUtils {
  13.  
  14. private static CacheManager cacheManager = ((CacheManager)SpringContextHolder.getBean("cacheManager"));
  15.  
  16. private static final String SYS_CACHE = "sysCache";
  17.  
  18. /**
  19. * 获取SYS_CACHE缓存
  20. * @param key
  21. * @return
  22. */
  23. public static Object get(String key) {
  24. return get(SYS_CACHE, key);
  25. }
  26.  
  27. /**
  28. * 写入SYS_CACHE缓存
  29. * @param key
  30. * @return
  31. */
  32. public static void put(String key, Object value) {
  33. put(SYS_CACHE, key, value);
  34. }
  35.  
  36. /**
  37. * 从SYS_CACHE缓存中移除
  38. * @param key
  39. * @return
  40. */
  41. public static void remove(String key) {
  42. remove(SYS_CACHE, key);
  43. }
  44.  
  45. /**
  46. * 获取缓存
  47. * @param cacheName
  48. * @param key
  49. * @return
  50. */
  51. public static Object get(String cacheName, String key) {
  52. Element element = getCache(cacheName).get(key);
  53. return element==null?null:element.getObjectValue();
  54. }
  55.  
  56. /**
  57. * 写入缓存
  58. * @param cacheName
  59. * @param key
  60. * @param value
  61. */
  62. public static void put(String cacheName, String key, Object value) {
  63. Element element = new Element(key, value);
  64. getCache(cacheName).put(element);
  65. }
  66.  
  67. /**
  68. * 从缓存中移除
  69. * @param cacheName
  70. * @param key
  71. */
  72. public static void remove(String cacheName, String key) {
  73. getCache(cacheName).remove(key);
  74. }
  75.  
  76. /**
  77. * 获得一个Cache,没有则创建一个。
  78. * @param cacheName
  79. * @return
  80. */
  81. private static Cache getCache(String cacheName){
  82. Cache cache = cacheManager.getCache(cacheName);
  83. if (cache == null){
  84. cacheManager.addCache(cacheName);
  85. cache = cacheManager.getCache(cacheName);
  86. cache.getCacheConfiguration().setEternal(true);
  87. }
  88. return cache;
  89. }
  90.  
  91. public static CacheManager getCacheManager() {
  92. return cacheManager;
  93. }
  94.  
  95. }

  spring配置文件:

  1. <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
  2. <property name="configLocation" value="classpath:cache/ehcache-local.xml" />
  3. </bean>

  ehcache-local.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <ehcache updateCheck="false" name="defaultCache">
  3.  
  4. <!--
  5.  
  6. CacheManager级别有三个属性可以分别用来限制三种存储器缓存信息的大小,其控制的都是字节数,分别是maxBytesLocalHeap、maxBytesLocalOffHeap和maxBytesLocalDisk。
  7. CacheManager级别限制的大小是其内所有的Cache共享的。
  8. maxBytesLocalHeap是用来限制缓存所能使用的堆内存的最大字节数的,但是当我们没有指定CacheManager级别的maxBytesLocalHeap时,我们必须在每一个Cache上指定maxBytesLocalHeap或maxEntriesLocalHeap。
  9. maxBytesLocalOffHeap是用来限制缓存所能使用的非堆内存的最大字节数
  10. maxBytesLocalDisk是用来限制缓存所能使用的磁盘的最大字节数的
  11. 当我们在CacheManager级别指定了maxBytesLocalOffHeap时就会隐式的使所有Cache级别的overflowToOffHeap为true,在Cache级别使用该属性时只会使当前Cache的overflowToOffHeap为true
  12. 当我们在CacheManager级别指定了maxBytesLocalDisk时会隐式的指定所有Cache的overflowToDisk为true,而Cache级别只会使当前Cache的overflowToDisk为true
  13.  
  14. 缓存大小的限制可以设置在CacheManager上,也可以设置在单个的Cache上。我们可以设置缓存使用内存的大小,也可以设置缓存使用磁盘的大小,但是使用堆内存的大小是必须设置的,
  15. 其它可设可不设,默认不设就是无限制。在设置缓存大小的时候,我们可以设置缓存使用某一个存储器的最大字节数,也可以设置缓存在某一个存储器上最多存放元素的数量。
  16. -->
  17.  
  18. <diskStore path="../temp/jeesite/ehcache" />
  19.  
  20. <!-- 默认缓存配置. -->
  21. <defaultCache maxEntriesLocalHeap="100" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600"
  22. overflowToDisk="true" maxEntriesLocalDisk="100000" />
  23.  
  24. <!-- 系统缓存 -->
  25. <cache name="sysCache" maxEntriesLocalHeap="100" eternal="true" overflowToDisk="true"/>
  26.  
  27. <!-- 用户缓存 -->
  28. <cache name="userCache" maxEntriesLocalHeap="100" eternal="true" overflowToDisk="true"/>
  29.  
  30. <!-- 工作流模块缓存 -->
  31. <cache name="actCache" maxEntriesLocalHeap="100" eternal="true" overflowToDisk="true"/>
  32.  
  33. <!-- 内容管理模块缓存
  34. <cache name="cmsCache" maxEntriesLocalHeap="100" eternal="true" overflowToDisk="true"/> -->
  35.  
  36. <!-- 系统活动会话缓存 -->
  37. <cache name="activeSessionsCache" maxEntriesLocalHeap="10000" overflowToDisk="true"
  38. eternal="true" timeToLiveSeconds="0" timeToIdleSeconds="0"
  39. diskPersistent="true" diskExpiryThreadIntervalSeconds="600"/>
  40.  
  41. <!-- 简单页面缓存
  42. <cache name="SimplePageCachingFilter" maxEntriesLocalHeap="100" eternal="false" overflowToDisk="true"
  43. timeToIdleSeconds="120" timeToLiveSeconds="120" memoryStoreEvictionPolicy="LFU"/> -->
  44.  
  45. </ehcache>

  

Cache 工具类的更多相关文章

  1. Guava Cache 工具类 [ GuavaCacheUtil ]

    pom.xml <dependency> <groupId>com.google.guava</groupId> <artifactId>guava&l ...

  2. Guava Cache 工具类

    maven依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava&l ...

  3. Jeesite的cahche工具类

    本CacheUtils主要是基于shiro的cache进行处理. 其他选择: 类似的我们可以选择java cache ,spring cahche等方案.                   再进一步 ...

  4. java JedisUtils工具类

    package com.sh.xrsite.common.utils; import java.util.List; import java.util.Map; import java.util.Se ...

  5. Redis工具类

    /** * Copyright © 2012-2016 * <a href="https://github.com/thinkgem/smkj">smkj</a& ...

  6. 【Java并发工具类】ReadWriteLock

    前言 前面介绍过ReentrantLock,它实现的是一种标准的互斥锁:每次最多只有一个线程能持有ReentrantLock.这是一种强硬的加锁规则,在某些场景下会限制并发性导致不必要的抑制性能.互斥 ...

  7. Cache【硬盘缓存工具类(包含内存缓存LruCache和磁盘缓存DiskLruCache)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 内存缓存LruCache和磁盘缓存DiskLruCache的封装类,主要用于图片缓存. 效果图 代码分析 内存缓存LruCache和 ...

  8. utils部分--一些通用的工具类封装

    1.简介 utils部分是对一些常用的工具类进行简单的封装,使用起来比较方便.这里列举常用的一些. 2.ContextUtils使用 主要封装了网络判断.一些方法解释如下: ? 1 2 3 4 5 6 ...

  9. Android加载网络图片的工具类

    ImageView加载网络的图片 HttpUtil.java package com.eiice.httpuimagetils; import java.io.ByteArrayOutputStrea ...

随机推荐

  1. Shell教程1​-第一个Shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了.输入一些代码: #!/bin/bash ...

  2. Hibernate查询出现java.lang.IllegalArgumentException异常解决方法

    Hibernate查询出现java.lang.IllegalArgumentException. 异常信息如下:java.lang.IllegalArgumentException        at ...

  3. linux 下查看系统内存使用情况的方法

    在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在linux系统如何查看内存使用情况呢?下面和大家分享在Linux 下查看内存使用情况的free命令: [root@scs ...

  4. 身份证上的X到底代表什么?

    生活中,无论你是坐火车,还是办理各种手续,都需要用到身份证,它现在已经俨然成为我们生活的非常重要的一部分,但是关于身份证本身,你了解多少呢? 有人会说了,为什么我的身份证上写的有效时间是10年,而一些 ...

  5. 为网站添加网址图标favicon.ico

    今天终于有时间把domety的图标设计好,并显示在了网站地址前面.如果你还不知道怎么把自己的图标放到网站上,今天DDBug就和你分享一下实现方法. 制作图标 首先是准备一张ico图标,你可以从网上搜索 ...

  6. 什么是CC攻击,如何防止网站被CC攻击的方法总汇

    CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一 ...

  7. CMDB反思4

    CMDB模型设计2 http://blog.vsharing.com/xqscool/A1275233.html 估计大家看到破子的这两篇都有点晕哈,我也有点晕. 两篇对比来看.   第1处,属性部分 ...

  8. python27+django1.9添加api

    我们进入Python的交互 shell 并使用Django提供的API.要进入Python shell,使用python manage.py shell 使用这个而不是简单的输入"pytho ...

  9. IoC Service Provier

    本文节选自<Spring 揭秘>. 虽然业务对象可以通过IoC方式声明相应的依赖,但是最终仍然需要通过某种角色或者服务将这些相互依赖的对象绑定到一起,而IoC Service Provid ...

  10. java 创建线程

    一.继承Thread类 为创建一个线程,最简单的方法就是从Thread类继承.这个类包含了创建和运行线程所需的一切东西.Thread类最重要的方法是run(),但为了使用run(),必须对其进行重写. ...