coody-cache 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
coody-cache 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 GPL
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发缓存系统
开发厂商
地区 国产
提 交 者 Coody
适用人群 未知
收录时间 2017-02-20

软件简介

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

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (3)

加载中
打分: 还行
群主大大
2018/04/19 15:12
回复
举报
Coody软件作者
数据变动的时候通过CacheWipe清理缓存,这样当你再次进行CacheWrite就是最新的数据且缓存了。
2017/03/31 16:29
回复
举报
打分: 力荐
我比较关心的,比如我缓存了数据库某个表的数据,那当数据变动的时候,缓存能否更新?还有有些数据,比如常量,字典,我希望永久缓存,能否取消时效?
2017/02/24 14:39
回复
举报
更多评论
暂无内容
发表于开发技能专区
2015/06/03 12:25

spring-simple-cache的那些事

spring-simple-cache的那些事

0
8
发表了博客
2019/02/05 18:11

golang cache--go-cache

go-cache是一款类似于memached 的key/value 缓存软件。它比较适用于单机执行的应用程序。 go-cache实质上就是拥有过期时间并且线程安全的map,可以被多个goroutine安全访问。 下面举例说明其用法。 Demo package main import ( "log" "time" "github.com/patrickmn/go-cache" ) func main(...

0
0
发表了博客
2019/11/07 15:36

I-Cache和D-cache

两者的区别: 一方面是cache的行为。Icache大多都是顺序取指,碰到分支指令也会跳转,而Dcache访问的模式变化比较大.也就是前者所说的pattern的问题.指令只有读和refill没有写,而数据有读也有写.最重要的是冯氏的结构是指令和数据分离.I和D在一起只有相互干扰. 另一个方面就是,物理设计上考虑: 一个union的cache,同时需要...

0
1
发表了博客
2018/07/24 14:40

memory cache 和 disk cache

转载:https://blog.csdn.net/baidu_38742725/article/details/77181078 form memory cache、form disk cache与304 200 from memory cache 不访问服务器,直接读缓存,从内存中读取缓存。此时的数据时缓存到内存中的,当kill进程后,数据将不存在 200 from disk cache 不访问服务器,直接读缓存,从磁盘中读取缓存,当k...

0
0
发表于服务端专区
2018/05/31 23:00

memory cache 和 disk cache

memory cache 和 disk cache

0
0
发表了博客
2018/06/29 12:02

from disk cache 与 from memory cache

<div id="cnblogs_post_body" class="blogpost-body"><h2>webkit资源的分类</h2> <p>webkit的资源分类主要分为两大类:主资源和派生资</p> <div> <div> <h2>http状态码</h2> <p><strong>200 from memory cache</strong></p> <p>不访问服务器,直接读缓存,从内存中读取缓存。此时的数据时缓存到内存中的,当kill进程后,...

0
0
发表于服务端专区
2016/09/02 16:05

librbd cache 和kvm cache调查

对kvm+librbd的组合时,开通块缓存对数据可靠性进行了分析。众所周知,开启磁盘缓存在一定程度上会提高读写性能,但是用户会担心系统突然死机或者掉电等情况下,会不会导致缓存数据丢失。 其实网上已经有不少文章提到过这块[3][5] ,不过鉴于稳妥起见,需要求证并记录下来。 以QEMU中linux系统为例,QEMU上层的io路径如下...

0
2
发表了博客
2012/10/07 15:01

cache

今天思考了下 觉得没必要使用list来为 client_context 做cache ....直接 malloc free 很好。。。

0
0
发表于服务端专区
2014/07/08 17:04

Cache

Cache, 一个在计算机中几乎随时接触的概念。 CPU中Cache能极大提高存取数据和指令的时间 让整个存储器既有Cache的高速度,又能有内存的大容量 操作系统中的内存page中使用的Cache能使得频繁读取的内存磁盘文件较少的被置换出内存,从而提高访问速度; 数据库中数据查询也用到Cache提高效率;即便是Powerbuilder的DataWin...

0
0
发表了博客
2015/09/25 10:34

cache

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Reflection; namespace WindowsFormsApplication1 {         public class Caching         {             /// <summary>           ...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
3 评论
14 收藏
分享
返回顶部
顶部