zoukankan      html  css  js  c++  java
  • Jeesite的cahche工具类

    本CacheUtils主要是基于shiro的cache进行处理.
    其他选择: 类似的我们可以选择java cache ,spring cahche等方案.
                      再进一步使用,估计就是使用缓存策略和一些内存工具进行结合比如Ehcache 或者其他工具.
                      最后的解决方案好像可以使用redis做分布式缓存.

    1. /**
    2. * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
    3. */
    4. package com.thinkgem.jeesite.common.utils;
    5. import java.util.Iterator;
    6. import java.util.Set;
    7. import org.apache.shiro.cache.Cache;
    8. import org.apache.shiro.cache.CacheManager;
    9. import org.slf4j.Logger;
    10. import org.slf4j.LoggerFactory;
    11. /**
    12. * Cache工具类
    13. * @author ThinkGem
    14. * @version 2013-5-29
    15. */
    16. public class CacheUtils {
    17. private static Logger logger = LoggerFactory.getLogger(CacheUtils.class); //本类Logger
    18. private static CacheManager cacheManager = SpringContextHolder.getBean(CacheManager.class);
    19. private static final String SYS_CACHE = "sysCache";
    20. /**
    21. * 获取SYS_CACHE缓存
    22. * @param key
    23. * @return
    24. */
    25. public static Object get(String key) {
    26. return get(SYS_CACHE, key);
    27. }
    28. /**
    29. * 获取SYS_CACHE缓存
    30. * @param key
    31. * @param defaultValue
    32. * @return
    33. */
    34. public static Object get(String key, Object defaultValue) {
    35. Object value = get(key);
    36. return value != null ? value : defaultValue;
    37. }
    38. /**
    39. * 写入SYS_CACHE缓存
    40. * @param key
    41. * @return
    42. */
    43. public static void put(String key, Object value) {
    44. put(SYS_CACHE, key, value);
    45. }
    46. /**
    47. * 从SYS_CACHE缓存中移除
    48. * @param key
    49. * @return
    50. */
    51. public static void remove(String key) {
    52. remove(SYS_CACHE, key);
    53. }
    54. /**
    55. * 获取缓存
    56. * @param cacheName
    57. * @param key
    58. * @return
    59. */
    60. public static Object get(String cacheName, String key) {
    61. return getCache(cacheName).get(getKey(key));
    62. }
    63. /**
    64. * 获取缓存
    65. * @param cacheName
    66. * @param key
    67. * @param defaultValue
    68. * @return
    69. */
    70. public static Object get(String cacheName, String key, Object defaultValue) {
    71. Object value = get(cacheName, getKey(key));
    72. return value != null ? value : defaultValue;
    73. }
    74. /**
    75. * 写入缓存
    76. * @param cacheName
    77. * @param key
    78. * @param value
    79. */
    80. public static void put(String cacheName, String key, Object value) {
    81. getCache(cacheName).put(getKey(key), value);
    82. }
    83. /**
    84. * 从缓存中移除
    85. * @param cacheName
    86. * @param key
    87. */
    88. public static void remove(String cacheName, String key) {
    89. getCache(cacheName).remove(getKey(key));
    90. }
    91. /**
    92. * 从缓存中移除所有
    93. * @param cacheName
    94. */
    95. public static void removeAll(String cacheName) {
    96. Cache<String, Object> cache = getCache(cacheName);
    97. Set<String> keys = cache.keys();
    98. for (Iterator<String> it = keys.iterator(); it.hasNext();){
    99. cache.remove(it.next());
    100. }
    101. logger.info("清理缓存: {} => {}", cacheName, keys);
    102. }
    103. /**
    104. * 获取缓存键名,多数据源下增加数据源名称前缀
    105. * @param key
    106. * @return
    107. */
    108. private static String getKey(String key){
    109. // String dsName = DataSourceHolder.getDataSourceName();
    110. // if (StringUtils.isNotBlank(dsName)){
    111. // return dsName + "_" + key;
    112. // }
    113. return key;
    114. }
    115. /**
    116. * 获得一个Cache,没有则显示日志。
    117. * @param cacheName
    118. * @return
    119. */
    120. private static Cache<String, Object> getCache(String cacheName){
    121. Cache<String, Object> cache = cacheManager.getCache(cacheName);
    122. if (cache == null){
    123. throw new RuntimeException("当前系统中没有定义“"+cacheName+"”这个缓存。");
    124. }
    125. return cache;
    126. }
    127. }





  • 相关阅读:
    Gram 矩阵性质及应用
    Gram 矩阵性质及应用
    经典公开课、好的学习网站
    经典公开课、好的学习网站
    机器学习、深度学习经典课程
    机器学习、深度学习经典课程
    机器学习竞赛(代码)
    机器学习竞赛(代码)
    数学类网站、代码(Matlab & Python & R)
    数学类网站、代码(Matlab & Python & R)
  • 原文地址:https://www.cnblogs.com/redcoatjk/p/5981307.html
Copyright © 2011-2022 走看看