spring cache抽象详解

spring cache抽象详解

ID:11494314

大小:73.78 KB

页数:16页

时间:2018-07-12

spring cache抽象详解_第1页
spring cache抽象详解_第2页
spring cache抽象详解_第3页
spring cache抽象详解_第4页
spring cache抽象详解_第5页
资源描述:

《spring cache抽象详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、SpringCache抽象详解springcahe 缓存简介缓存,我的理解是:让数据更接近于使用者;工作机制是:先从缓存中读取数据,如果没有再从慢速设备上读取实际数据(数据也会存入缓存);缓存什么:那些经常读取且不经常修改的数据/那些昂贵(CPU/IO)的且对于相同的请求有相同的计算结果的数据。如CPU--L1/L2--内存--磁盘就是一个典型的例子,CPU需要数据时先从L1/L2中读取,如果没有到内存中找,如果还没有会到磁盘上找。还有如用过Maven的朋友都应该知道,我们找依赖的时候,先从本机仓库找,再从本地服务器仓库

2、找,最后到远程仓库服务器找;还有如京东的物流为什么那么快?他们在各个地都有分仓库,如果该仓库有货物那么送货的速度是非常快的。缓存命中率即从缓存中读取数据的次数与总读取次数的比率,命中率越高越好:命中率=从缓存中读取次数/(总读取次数[从缓存中读取次数 +从慢速设备上读取的次数])Miss率=没有从缓存中读取的次数 /(总读取次数[从缓存中读取次数 +从慢速设备上读取的次数])这是一个非常重要的监控指标,如果做缓存一定要健康这个指标来看缓存是否工作良好;缓存策略Evictionpolicy移除策略,即如果缓存满了,从缓存中

3、移除数据的策略;常见的有LFU、LRU、FIFO:FIFO(FirstInFirstOut):先进先出算法,即先放入缓存的先被移除;LRU(LeastRecentlyUsed):最久未使用算法,使用时间距离现在最久的那个被移除;LFU(LeastFrequentlyUsed):最近最少使用算法,一定时间段内使用次数(频率)最少的那个被移除;TTL(TimeToLive )存活期,即从缓存中创建时间点开始直到它到期的一个时间段(不管在这个时间段内有没有访问都将过期)TTI(TimeToIdle)空闲期,即一个数据多久没被访

4、问将从缓存中移除的时间。到此,基本了解了缓存的知识,在Java中,我们一般对调用方法进行缓存控制,比如我调用"findUserById(Longid)",那么我应该在调用这个方法之前先从缓存中查找有没有,如果没有再掉该方法如从数据库加载用户,然后添加到缓存中,下次调用时将会从缓存中获取到数据。自Spring3.1起,提供了类似于@Transactional注解事务的注解Cache支持,且提供了Cache抽象;在此之前一般通过AOP实现;使用SpringCache的好处:提供基本的Cache抽象,方便切换各种底层Cache

5、;通过注解Cache可以实现类似于事务一样,缓存逻辑透明的应用到我们的业务代码上,且只需要更少的代码就可以完成;提供事务回滚时也自动回滚缓存;支持比较复杂的缓存逻辑;对于SpringCache抽象,主要从以下几个方面学习:·CacheAPI及默认提供的实现·Cache注解·实现复杂的Cache逻辑CacheAPI及默认提供的实现Spring提供的核心Cache接口: Java代码  1.package org.springframework.cache;  2.  3.public interface Cache {  

6、4.    String getName();  //缓存的名字  5.    Object getNativeCache(); //得到底层使用的缓存,如Ehcache  6.    ValueWrapper get(Object key); //根据key得到一个ValueWrapper,然后调用其get方法获取值  7.     T get(Object key, Class type);//根据key,和value的类型直接获取value  8.    void put(Object key, Obj

7、ect value);//往缓存放数据  9.    void evict(Object key);//从缓存中移除key对应的缓存  10.    void clear(); //清空缓存  11.  12.    interface ValueWrapper { //缓存值的Wrapper  13.        Object get(); //得到真实的value  14.        }  1.}  提供了缓存操作的读取/写入/移除方法;默认提供了如下实现:ConcurrentMapCache:使用java.u

8、til.concurrent.ConcurrentHashMap实现的Cache;GuavaCache:对Guavacom.google.common.cache.Cache进行的Wrapper,需要GoogleGuava12.0或更高版本,@sincespring4;EhCacheCache:使用Ehcache实现

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。