cache java

作者:原创时间:2022-03-21
文档

cache java是什么, 让我们一起了解一下?

Cache 是一个像 Map 一样的数据结构,它允许基于 Key 的临时储存。缓存被单个 CacheManager 拥有。

Java 的缓存 API 定义了五个核心接口:CachingProvider,CacheManager,Cache,Entry 和 ExpiryPolicy。

Java实现cache的基本机制是什么?

我这里说的cache不是指CPU和RAM之间的缓存,而是java应用中间常用的缓存。最常使用的场合就是访问数据库的时候为了提高效率而使用的 cache。一般的用法就是把数据从数据库读到内存,然后之后的数据访问都从内存来读,从而减少对数据库的读取次数来提高效率。

说了这么多,Java 下到底如何实现Cache,希望下面的实际案例可以帮助到你。

public class CacheFactory {
   private static ConcurrentHashMap caches = new ConcurrentHashMap<>();
   private static ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
 
   private static void register(Cache cache) {
      caches.put(cache.category(), cache);
   }
 
   private static void registerAll() {
      register(new StockCache());
   }
 
   public static void init() {
      registerAll();
 
      for (Cache cache : caches.values()) {
         executorService.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
               cache.refresh();
            }
         }, 0, cache.interval(), TimeUnit.MILLISECONDS);
      }
   }
 
   public static Cache getCache(String key) {
      if (caches.contains(key)) {
         return caches.get(key);
      }
      return null;
   }
}
 
// cache接口除了需要提供interval和refresh以外,还需要提供一个category来区分不同的Cache
public interface Cache {
   /**
    * Refresh the cache. If succeed, return true, else return false;
    * 
    * @return
    */
   boolean refresh();
 
   /**
    * How much time it will refresh the cache.
    * 
    * @return
    */
   long interval();
 
   /**
    * Cache's category. Each cache has distinct category.
    * 
    * @return
    */
   String category();
}

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
calendar java qq实名认证怎么解除 callable java character java class转java cmake java compareto java 被删的微信聊天记录怎么找回来 continue java django java 微信怎么群发消息给多人 double java dozer java eclipse创建java arrays java awesome java 小程序和app的区别 enum java excel读取java extend java c#调用java接口 c#调用java brew java boolean java bitset java axis java asterisk java assert java 怎样改抖音名字的昵称 aspect java ansible java ajax java antlr java 交管12123怎么查科目一分数 abstract java 拼多多拒收在哪里操作 微信恢复删除的聊天记录 微信扫码不能扫了怎么办 怎样查看微信删除的聊天记录 两个二维码怎么拼一起