cache java
发布时间:2025-05-25 12:46:26 发布人:远客网络
一、cache java
1、cache java是什么,让我们一起了解一下?
2、Cache 是一个像 Map一样的数据结构,它允许基于 Key的临时储存。缓存被单个 CacheManager 拥有。
3、 Java的缓存 API定义了五个核心接口:CachingProvider,CacheManager,Cache,Entry 和 ExpiryPolicy。
4、 Java实现cache的基本机制是什么?
5、我这里说的cache不是指CPU和RAM之间的缓存,而是java应用中间常用的缓存。最常使用的场合就是访问数据库的时候为了提高效率而使用的 cache。一般的用法就是把数据从数据库读到内存,然后之后的数据访问都从内存来读,从而减少对数据库的读取次数来提高效率。
6、说了这么多,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();}
二、Java的应用缓存cache如何入门
跟session不是一个概念,简单的谈下我个人对缓存的看法吧,你可以把它想象成一个容量大的hashMap,可以往里面get set数据,由于数据存在内存当中而不是数据库中,所以存取速度较快。
java常用的缓存有:ehcache, oscache,jcache,这些cache都是单机的,即存在本机的内存中,另外分布式的cache我用过memcache,它被独立部署在一台服务器上,可以实现多个客户端共用缓存。
一般用到缓存的场景:1.在处理并发请求,需要及时响应的。2.加快系统响应速度。举个例子:比如购物网站有售卖物品的排行榜,这种数据都是由数据库中N多表关联查询排序得到的,那么就可以存在缓存当中,当页面请求查看排行榜时直接取缓存中的数据。后台定时任务根据一定的时间间隔计算好排行结果,再替换到当前缓存中。这就是一个简单的缓存应用示例。
具体用法你可以参考各个缓存的说明文档,百度一下很多的。纯手打,望采纳~
三、java ehcache
java ehcache是什么,让我们一起了解一下?
EhCache是一个纯Java的进程内缓存框架,具有快速、精干等特点。主要面向通用缓存,Java EE和轻量级容器,具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序的功能。
4、缓存数据有两级:内存和磁盘,因此无需担心容量问题。
5、缓存数据会在虚拟机重启的过程中写入磁盘。
6、可以通过RMI、可插入API等方式进行分布式缓存。
7、具有缓存和缓存管理器的侦听接口。
8、支持多缓存管理器实例,以及一个实例的多个缓存区域。
Ehcache在java中是如何使用的?
具体代码如下:代码实现的功能非常简单,即创建CacheManager,往里面存放一个Cache,然后往cache里面存数据和取数据,目的是展示Ehcache的基本使用。/** * XXX.com Inc. * Copyright (c) 2004-2014 All Rights Reserved. */ package com.test.encache; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net.sf.ehcache.Element; /** * * @author XXX * @version $Id: EncacheTest.java, v 0.1 2014年8月8日 下午5:30:03 XXX Exp $ */ public class EncacheTest { //一些配置参数 //private final static String configFileName = "ehcache.xml"; //private final static int maxEntriesLocalHeap = 1000; private static CacheManager cacheManager; static String cacheName = "cache1"; public static void main(String[] args) { ehcacheSetUp(); ehcacheUse(); } private static void ehcacheSetUp() { cacheManager = CacheManager.create(); //CacheConfiguration configuration = new CacheConfiguration(configFileName, // maxEntriesLocalHeap); //Cache cache = new Cache(configuration); cacheManager.addCache(cacheName); } private static void ehcacheUse() { Cache cache1 = cacheManager.getCache(cacheName); String key = "key1"; String value = "value1"; writeSomeData(cache1, key, value); Element element = readSomeData(cache1, key, value); System.out.println(element); } private static void writeSomeData(Cache cache, String key, String value) { cache.put(new Element(key, value)); } private static Element readSomeData(Cache cache, String key, String value) { return cache.get(key); }}