您的位置:首页 > 数据库 > Memcache

simple-cache说明文档-注解化自动缓存,redis、memcached

2017-02-17 19:21 573 查看
simple-cache说明文档

1.注意事项:

强烈建议系统各项业务使用缓存,大弧度缓解数据库压力

2.面向问题:

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

3.核心对象(注解):

 

1)@CacheWrite

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

2)@CacheWipe:

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

3)@CacheWipes

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){

    }

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

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

    @CacheWrite(key=CacheFinal.SYSTEM_TAGS,validTime=3600)

   
public List<TagForSys> loadSysTags(){

    }

    //指定参数/时间

   
@CacheWrite(key=CacheFinal.ANCHOR_TAGS,validTime=60,fields="uid")

   
public
List<TagForAnchor> loadAnchorTags(Integer uid){

    }

注:方法执行后,程序会根据CacheWrite指定的key生成缓存。如果指定了pkField字段,程序会根据key+pkField字段的值生成缓存。并设置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清理缓存,如果指定了pkField字段,程序会根据key+pkField字段的值清理缓存。

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):

<aop:aspectj-autoproxy />

        <aop:aspectj-autoproxy proxy-target-class="true" />

        <!-- 配置程序缓存 需要实现com.simple.cache.sample.CacheFace接口-->

        <bean id="localCache" class="com.app.server.cache.LocalCache"></bean>

        <!-- 配置切面缓存 -->

        <bean id="simpleCacheHandle" class="com.simple.cache.handle.CacheHandle">

                <property name="cacheFace" ref="localCache" />

        </bean>

        <aop:config>

                <aop:aspect id="superAop" ref="simpleCacheHandle">

                   <aop:pointcut id="cachePointcut"

                            expression="@annotation(com.simple.cache.annotation.CacheWrite)||@annotation(com.simple.cache.annotation.CacheWipe)" />

                   <aop:around method="CacheProcess" pointcut-ref="cachePointcut"/>

                </aop:aspect>

        </aop:config>

 

9.版权与作者

作者:WebSOS

反馈邮箱:644556636@qq.com

转载请保留版权。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: