原文地址:https://www.jianshu.com/p/03b289439de2

springboot中使用说明

jetcache原理参见:https://www.jianshu.com/p/8cff0062a899
jetcache 源码参见:https://github.com/alibaba/jetcache.git

1 引入pom依赖

<dependency>
<groupId>com.alicp.jetcache</groupId>
<artifactId>jetcache-starter-redis</artifactId>
<version>2.4.4</version>
</dependency>

2 在启动类上增加注解

@SpringBootApplication(scanBasePackages = {"com.example.firstjetcacheprj.business","com.alicp.jetcache.autoconfigure"})
@EnableMethodCache(basePackages = "com.example.firstjetcacheprj.business")
@EnableCreateCacheAnnotation
public class FirstjetcacheprjApplication {
public static void main(String[] args) {
SpringApplication.run(FirstjetcacheprjApplication.class, args);
}
}

其中需要注意的是:

  • 在@SpringBootApplication注解对应的scanBasePackages中增加jetcache自动配置对应的包。
  • 增加注解EnableMethodCache,并制定开启缓存对应的包路径。
  • 增加注解EnableCreateCacheAnnotation,这个注解是开启对应的CreateCache注解。

3 在application.yml中增加对应的缓存全局配置

jetcache:
statIntervalMinutes: 15
areaInCacheName: false
local:
default:
type: linkedhashmap
keyConvertor: fastjson
otherCacheName:
type: xxx
keyConverter: yyy
remote:
default:
type: redis
keyConvertor: fastjson
valueEncoder: java
valueDecoder: java
poolConfig:
minIdle: 5
maxIdle: 20
maxTotal: 50
host: 127.0.0.1
port: 6379

配置中字段讲解可以参考https://github.com/alibaba/jetcache/wiki/Config_CN

4 在对应接口或者类方法上增加缓存注解

具体注解详细说明请参考:https://github.com/alibaba/jetcache/wiki/MethodCache_CN

4.1增加缓存

接口Service对应的代码如下:

public interface Service {
@Cached(cacheType = CacheType.LOCAL)
int printSay(String message);
}

只需要在对应接口的方法上增加注解@Cache,即可以在对应这个方法增加缓存。

4.2缓存刷新

对应的代码如下:

public interface Service {
@Cached(cacheType = CacheType.LOCAL)
@CacheRefresh(refresh = 60)
int printSay(String message);
}

@CacheRefresh上面的配置是1分钟刷新一次

4.3 缓存失效

对应的代码如下:

@CacheInvalidate(name = "c1", key = "args[0]")
void delete(String id);

表示从缓存名称为c1,将对应key为id值的记录从缓存c1中删除。

4.4 缓存更新

对应的代码如下:

@CacheUpdate(name = "c1", key = "#id", value = "args[1]")
void update(String id, int value);

刷新缓存对应的缓存名称为c1,缓存中对应的key为id的值,更新key的值为value的值。

4.5 缓存开启

对应的代码如下:

@Cached(enabled = false)
public int countWithDisabledCache(){
return count++;
}
@EnableCache
public int enableCacheWithAnnoOnClass(){
return countWithDisabledCache();
}

从上面代码中可以看出方法countWithDisabledCache对应的方法定义了缓存功能,但是这个功能被关闭了,而方法enableCacheWithAnnoOnClass方法上开启了缓存的功能,则方法countWithDisabledCache虽然本身的缓存被关闭了,但是调用方法开启了,则方法countWithDisabledCache对应的缓存功能也被开启了。

作者:瑜骐
链接:https://www.jianshu.com/p/03b289439de2
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

阿里巴巴Jetcache springboot使用教程的更多相关文章

  1. SpringBoot图文教程14—SpringBoot集成EasyExcel「上」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  2. springBoot系列教程07:异常捕获

    发生异常是很正常的事,异常种类也是千奇百怪,发生异常并不可怕,只要正确的处理,并正确的返回错误信息并无大碍,如果不进行捕获或者处理,分分钟服务器宕机是很正常的事 所以处理异常时,最基本的要求就是发生异 ...

  3. SpringBoot进阶教程(二十九)整合Redis 发布订阅

    SUBSCRIBE, UNSUBSCRIBE 和 PUBLISH 实现了 发布/订阅消息范例,发送者 (publishers) 不用编程就可以向特定的接受者发送消息 (subscribers). Ra ...

  4. SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1

    在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...

  5. Java工程师之SpringBoot系列教程前言&目录

    前言 与时俱进是每一个程序员都应该有的意识,当一个Java程序员在当代步遍布的时候,你就行该想到我能多学点什么.可观的是后端的框架是稳定的,它们能够维持更久的时间在应用中,而不用担心技术的更新换代.但 ...

  6. SpringBoot系列教程起步

    本篇学习目标 Spring Boot是什么? 构建Spring Boot应用程序 三分钟开发SpringBoot应用程序 本章源码下载 Spring Boot是什么? spring Boot是由Piv ...

  7. (转) SpringBoot非官方教程 | 第二十四篇: springboot整合docker

    这篇文篇介绍,怎么为 springboot程序构建一个Docker镜像.docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的 ...

  8. (转)SpringBoot非官方教程 | 第七篇:springboot开启声明式事务

    springboot开启事务很简单,只需要一个注解@Transactional 就可以了.因为在springboot中已经默认对jpa.jdbc.mybatis开启了事事务,引入它们依赖的时候,事物就 ...

  9. (转)SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql

    本文介绍springboot通过jdbc访问关系型MySQL,通过spring的JdbcTemplate去访问. 准备工作 jdk 1.8 maven 3.0 idea mysql 初始化mysql: ...

随机推荐

  1. 2019-7-29-win10-uwp-如何使用DataTemplate

    title author date CreateTime categories win10 uwp 如何使用DataTemplate lindexi 2019-7-29 10:2:32 +0800 2 ...

  2. PowerShell 通过 WMI 获取系统安装软件

    本文告诉大家如何通过 WMI 获取系统安装的软件 通过 Win32_Product 可以获取系统安装的软件 Get-WmiObject Win32_Product | Format-List Capt ...

  3. c# 写个简单的爬虫。注:就一个方法,没有注释,自己猜~哈哈

    和我,在成都的街头走一走,哦~喔~哦~ public JsonResult GetHtml() { string url = "http://www.xxxxxxxxxxxxxxxxxx.c ...

  4. js获取url参数值的方式

    定义方法: function getParam(paramName) { paramValue = ""; isFound = false; paramName = paramNa ...

  5. 浅解 go 语言的 interface(许的博客)

    我写了一个 go interface 相关的代码转换为 C 代码的样例.也许有助于大家理解 go 的 interface.不过请注意一点,这里没有完整解析 go 语言 interface 的所有细节. ...

  6. HMaster/HRegion Server 工作原理

      1.HBase系统架构       2. HRegion Sever架构图 0.94之前的版本 0.96+的版本 WAL: 即Write Ahead Log, 是HDFS上一个文件,早期版本中称为 ...

  7. python类型常用整理

    # 一.数字 # int(..) # 二.字符串 # replace find join strip startswith split upper lower format # tempalte = ...

  8. JDK源码那些事儿之浅析Thread上篇

    JAVA中多线程的操作对于初学者而言是比较难理解的,其实联想到底层操作系统时我们可能会稍微明白些,对于程序而言最终都是硬件上运行二进制指令,然而,这些又太过底层,今天来看一下JAVA中的线程,浅析JD ...

  9. 机器学习——Bagging与随机森林算法及其变种

    Bagging算法:  凡解:给定M个数据集,有放回的随机抽取M个数据,假设如此抽取3组,3组数据一定是有重复的,所以先去重.去重后得到3组数据,每组数据量分别是s1,s2,s3,然后三组分别训练组合 ...

  10. map类型转为实体类

    BareBaseRequest fromJson = JSON.parseObject(JSON.toJSONString(map), BareBaseRequest.class);