通常我们访问数据的情况如下图,数据存缓存就取缓存,不存缓存就取数据库,这样可以提升效率,不用一直读取数据库的信息:

开始记录:

关于SpringBoot缓存的应用

1. 首先在pom.xml文件中添加如下:

<dependency>
<!-- cache缓存 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>

2.在application的main方法中添加注解 @EnableCaching ,以开启缓存注解的应用:

@SpringBootApplication
@EnableCaching
public class AppConfig { public static void main(String[] args) {
SpringApplication.run(AppConfig.class, args);
}
}

3.在service等需要添加入缓存的方法前加入注解 @Cacheable (使用缓存,不调用方法)

    /**
* 根据ID查找用户信息,将方法运行结果进行缓存:以后再要相同数据,直接从缓存取,不需要调用方法;
*/
@Cacheable(cacheNames = {"cache1"})  //cacheNames或value都可以,表示你自定义的缓存容器的名字,这里使用大括号是说明可以存在多个缓存中使用
public User findById(Integer id) {
log.info("查询 ID=" + id + " 的结果");
User byId = userDao.findById(id);
return byId;
}

  3.1 缓存参数及条件的使用,采用pESL写法:

//  key表示该缓存的key,值是方法中的value; condition表示如果xx就使用缓存; unless表示如果xx就不使用缓存;
// 可以在condition或unless的双引号中用and来拼各种其他条件
@Cacheable(cacheNames = {"acc"}, key= "#root.methodName",condition = "#id>2",unless = "#a0==null")

4. 在service或需要的方法前加入@CachePut注解(即调用方法,又写数据库),用于修改数据库或更新缓存

    @CachePut(value = "acc",key = "#user.id")
public User update(User user) {
System.out.println("更新信息" + user);
userDao.update(user);
return user;
}

5.清除缓存,@CacheEvict。通常使用allEntries = true可以清除全部缓存,即不用单独制定key

    @CacheEvict(value = "acc", allEntries = true)
public void delete(Integer id) {
userDao.delete(id);
}

6.如果需要许多条件的叠加,使用@Caching,图示例子如下:

7. service下边每个方法都要写缓存名字比较麻烦,通常我们将总的名字写在service的类前边,@CacheConfig(cacheNames = {"emp"}),依次类推,把公共的缓存配置都写在这里就可以了;

通常来说,我们在开发过程中,多使用的是缓存中间件,比如:Redis、memcached、ehcache等;

SpringBoot默认使用的是SimpleCacheConfiguration的配置,然而还有许多其他的配置可用,那么我们后边来看一下Redis要如何配置。

SpringBoot日记——Cache缓存篇的更多相关文章

  1. SpringBoot系列——cache缓存

    前言 日常开发中,缓存是解决数据库压力的一种方案,通常用于频繁查询的数据,例如新闻中的热点新闻,本文记录springboot中使用cache缓存. 官方文档介绍:https://docs.spring ...

  2. springboot(九) Cache缓存和Redis缓存

    1. Cache缓存 1.1 缓存的概念&缓存注解 Cache 缓存接口,定义缓存操作.实现有:RedisCache.EhCacheCache.ConcurrentMapCache等 Cach ...

  3. 深度理解springboot集成cache缓存之源码解析

    一.案例准备 1.创建数据表(employee表) 2.创建Employee实体类封装数据库中的数据 @AllArgsConstructor @NoArgsConstructor @Data @ToS ...

  4. SpringBoot日记——Web开发篇

    准备开始实战啦!~~~~ 我们先来看,SpringBoot的web是如何做web开发的呢?通常的步骤如下: 1.创建springboot应用,指定模块: 2.配置部分参数配置: 3.编写业务代码: 为 ...

  5. SpringBoot日记——日志框架篇

    在项目的开发中,日志是必不可少的一个记录事件的组件,所以也会相应的在项目中实现和构建我们所需要的日志框架. 而市面上常见的日志框架有很多,比如:JCL.SLF4J.Jboss-logging.jUL. ...

  6. Springboot日记——核心编码篇

    背景吐槽:想要让自己进阶一下,一定要有个可以拿出来秀的东西,所以要尝试写一个属于自己的网站或者平台.因此,我大概的看了一下springboot+Mybatis-plus+... 框架介绍 通常 SSM ...

  7. SpringBoot日记——编码配置篇

    插入一个小篇章,有人在编写代码的时候,要么控制台乱码,要么页面乱码等等, 我这里有个配置,可以解决各种乱码问题,直接来看. # ==================== 编码配置 ========== ...

  8. Springboot使用ehcache缓存

    本文部分步骤继承于springboot使用cache缓存,如果有不清楚的,请移驾springboot使用cache缓存 ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java ...

  9. SpringBoot日记——缓存的使用

    SpringBoot核心技术的东西基本上都有介绍过了,接下来,进阶点~来说说缓存吧~ 缓存这个词不少同学应该不会很陌生.而我们这里主要使用的就是Redis. 客户端第一次请求的时候是从库里拿出我们需要 ...

随机推荐

  1. Exchange & Office 365最小混合部署

    前言 这篇文章的主题是混合部署~ 混合使得本地组织和云环境像一个单一的.协作紧密的组织一样运作.当组织决定进行混合部署,达到本地Exchange Server和Office 365共存的状态时,就会面 ...

  2. wordpress利用rsync同步备份

    我搭建的wordpress服务器现在使用的系统是opensuse, 服务器上面已做脚本和计划任务将wordpress使用的数据库与web目录每天压缩备份放到 /data/backup目录下 opera ...

  3. 解决windows10下无法安装.net framework 3.5,错误代码0x800F081F

    1.下载 NET Framework 3.5的安装包netfx3.cab: http://download.windowsupdate.com/d/msdownload/update/software ...

  4. playfair

    又是一道实验吧的题,哈哈,我比较弱. 因为题目写了play我首先想到的是playfair,好,下面先看下百科 好了,已知了密钥: 所以有: s n f m th b g o ui c j p vy d ...

  5. Array.prototype.reduce 的理解与实现

    Array.prototype.reduce 是 JavaScript 中比较实用的一个函数,但是很多人都没有使用过它,因为 reduce 能做的事情其实 forEach 或者 map 函数也能做,而 ...

  6. Regular Expression Patterns

    Regular Expression Patterns Following lists the regular expression syntax that is available in Pytho ...

  7. python第三课——数据类型2

    day03: 1.列表:list 特点:有序的(有索引.定义和显示顺序是一致的).可变的(既可以改变元素内容也可以自动扩容).可重复的. 可以存储任何的数据类型数据 定义个列表如下: lt = ['宋 ...

  8. swift的异常处理:本质是错误信息的传递方式

    func response(from resultObject: Any) throws -> Response { guard let dict = resultObject as? [Str ...

  9. 1898: [Zjoi2005]Swamp 沼泽鳄鱼

    1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1582 Solved: 870 [Submit][S ...

  10. ElasticSearch 简单的 搜索 聚合 分析

    一. 搜索1.DSL搜索 全部数据没有任何条件 GET /shop/goods/_search { "query": { "match_all": {} } } ...