基于切面的缓存插件 coody-cache

GPL
Java
跨平台
2017-02-20
Coody

simple-cache说明文档

1、注意事项:

建议系统各项业务以层的形式使用缓存,大弧度缓解数据库压力

2、面向问题:

1) 缓解数据库压力,提升服务端并发上限,提升业务代码执行效率。

3、核心对象(注解):

1) @CacheWrite

写缓存,方法执行后,将结果写入缓存。

2) @CacheWipe:

清理单个缓存,方法执行后,清理缓存

4、功能特色:

1) 弱化缓存“层”的概念

2) 支持缓存KEY

3) 支持缓存带参写入与清理

4) 任意Bean方法均支持缓存

5) 支持redis、memcached、localCache等缓存(凡是支持超时时间缓存均可)

5、如何为一个方法添加缓存

1) 简单使用,不要求清理,不强调实时性(默认缓存时间10秒)

 @CacheWrite
    public TagForUser loadUserTags(Integer uid,Integer tid){
       
    }

注:方法执行后,程序会根据类、方法、参数值生成一个方法KEY,并且将方法的结果写入缓存,并设置validTime有效时长,默认10秒,下次调用直接返回缓存,不会进入方法代码逻辑。

2) 简单使用,不要求清理,区分参数,设置缓存时间

 //单个参数
    @CacheWrite(fields="uid")
    public TagForUser loadUserTags(Integer uid,Integer tid){ 
    }
    //多个参数
    @CacheWrite(fields={"uid","tid"})
    public TagForUser loadUserTags(Integer uid,Integer tid){
    }
    //设置缓存时间
    @CacheWrite(fields={"uid","tid"},validTime=60)
    public TagForUser loadUserTags(Integer uid,Integer tid){
    }

注:方法执行后,程序会根据类、方法、fields指定的参数值生成一个方法KEY,并且将方法的结果写入缓存,并设置validTime有效时长,默认10秒,下次调用直接返回缓存,不会进入方法代码逻辑。

3) 精准使用,指定key,可清理:

  @CacheWrite(key=CacheFinal.SYSTEM_TAGS,validTime=3600)
    public ListloadSysTags(){
    }
    //指定参数/时间
    @CacheWrite(key=CacheFinal.ANCHOR_TAGS,validTime=60,fields="uid")
    public ListloadAnchorTags(Integer uid){
    }

注:方法执行后,程序会根据CacheWrite指定的key生成缓存。如果指定了fields字段,程序会根据key+fields字段的值生成缓存。并设置validTime有效时长,默认10秒,下次调用直接返回缓存,不会进入方法代码逻辑。

6、数据更新后,如何清理缓存1) 常规清理,清理指定key

//不强调参数,仅清理
    @CacheWipe(key=CacheFinal.ANCHOR_TAGS)
    public Integer saveUserTags(TagForUser userTag){
    }
   //强调参数,清理
    @CacheWipe(key=CacheFinal.ANCHOR_TAGS,fields="userTag.tid")
    public Integer saveUserTags(TagForUser userTag){
    }

注:方法执行后,程序会根据CacheWipe 指定的KEY清理缓存,如果指定了fields字段,程序会根据key+fields字段的值清理缓存。

2)多缓存清理,清理多套key

 //不强调参数,清理多套缓存
    @CacheWipe(key=CacheFinal.PET_YEAR_VALUE_CACHE),
    @CacheWipe(key=CacheFinal.PET_YEAR_DAY_VALUE_CACHE)}
    public Integer addSendValue(Integer uid,Integer sendValue){
    }    
    @CacheWipe(key=CacheFinal.PET_YEAR_VALUE_CACHE,fields="uid"),
    @CacheWipe(key=CacheFinal.PET_YEAR_DAY_VALUE_CACHE,fields="uid")}
    public Integer addSendValue(Integer uid,Integer sendValue){
  }

注:方法执行后,程序会根据CacheWipes读取CacheWipe集合并分别执行常规清理规则

7、运行环境

版本JAR:simple-cache-1.0.jar  下载地址:https://pan.baidu.com/s/1kUVgxhX

依赖JAR:aspectjrt.jar   spring-core.jar

运行环境:JDK1.8

8、配置文件(Spring): 

    由于相关配置被开源中国过滤,请参考文档:https://shimo.im/doc/GUqZ1IEqkF4tU67K?r=Z1NMPQ

9、版权与作者

作者:WebSOS

反馈邮箱:644556636@qq.com

的码云指数为
超过 的项目
加载中

评论(3)

zw0828
zw0828
群主大大
Coody
Coody 软件作者
数据变动的时候通过CacheWipe清理缓存,这样当你再次进行CacheWrite就是最新的数据且缓存了。
尚浩宇
尚浩宇
我比较关心的,比如我缓存了数据库某个表的数据,那当数据变动的时候,缓存能否更新?还有有些数据,比如常量,字典,我希望永久缓存,能否取消时效?

暂无资讯

暂无问答

Doctrine官方手册 - 缓存

24. Caching Doctrine provides cache drivers in the Common package for some of the most popular caching implementations such as APC, Memcache and Xcache. We also provide an Array...

2014/04/06 14:30
107
0
MemCached Cache Java Client封装优化历程

MemCached Cache在大型网站被应用得越来越广泛,不同语言的客户端也都在官方网站上有提供,但是Java的选择并不多。由于现在的MemCached Cache服务端是用C写的,因此我这个C不太熟悉的人也就没...

2014/04/13 19:32
93
0
django 配置

django,配置

2014/04/21 18:52
114
0
springboot cache redis 缓存

上一节学习spring的cache缓存,介绍了spring缓存的基础: https://my.oschina.net/silenceyawen/blog/1555996 现在学习使用redis实现缓存: 1. 指定provider可以使用配置: 2. redis在这里充...

2017/10/26 11:38
70
0
django缓存机制

1.设定缓存 缓存选择在你的settings文件的 CACHE_BACKEND 设置中,如果你使用缓存但没有指定 CACHE_BACKEND ,Django将默认使用 simple:/// 2. 内存缓冲 CACHE_BACKEND = ‘memcached://127...

2012/07/13 11:53
367
0
JAVA Web缓存

去年整理过关于JAVA web的一些缓冲知识 今天无疑见翻出这篇笔记 怕以后弄丢了 就在这里记录下吧

2016/04/22 15:29
110
1
solr的 group应用

solr group

2015/12/11 11:32
115
0
在symfony2项目中100%提升doctrine的性能

Doctrine 2 has a full chapter devoted to caching but up until now we had never taken a look to it at ulabox. The thing is that the chapter does not only speak about caching SQL ...

2014/04/06 14:27
948
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部