当前位置: 首页 > news >正文

谷粒商城——缓存——SpringCache

1. 配置使用

首先需要导入相关的依赖:

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

随后在配置文件中进行配置:

spring:cache:type: rediscache-names: myCache

最后在启动类中加入@EnableCaching注解。

2.相关注解操作

2.1@Cacheable

@Cacheable(value={cacheName1,cacheName2},key="'keyname'")(放在相应服务层实现方法上方):表示该方法的结果需要缓存,如果缓存中已存在该结果,方法就不会调用,如果缓存没有该结果,就会调用该方法,并将结果存储在缓存中。cacheNameX表示将结果放在那些缓存中。

当我们缓存中不存在相应的返回数据时,会自动将返回数据加入缓存中:

2.2@CacheEvict

在此之前需要介绍一下缓存更新(也叫缓存一致性)的两种模式:当对缓存中数据进行修改时,可以用双写模式失效模式来更新缓存。双写模式指的是将修改后的数据就是写入数据库之后再去写缓存。失效模式指的是将修改后的数据就是写入数据库之后删除对应缓存,当有用户查询时再重新建立新的缓存。

当我们在某个服务层的实现类方法(这个方法一般是用来修改缓存中的一些数据的)中上方加入@CacheEvict(value="cacheName",key="'keyName'")注解。这样当我们调用这个方法的时候,会自动删除名为cacheName缓存下键为keyName对应的缓存值(对应了失效模式)。

如果我们希望进行批量删除(因为之前@Cacheable方法中可能会将同一数据放入不同的缓存),需要修改注解变为:(@CacheEvict中2value不能像@Cacheable添加多个缓存名称

类比于@CacheEvict,@CachePut对应的也就是对应了双写模式。

相关文章:

  • 计算机网络——网络基础1
  • 在django中使用kindeditor出现转圈问题
  • Leetcode 3.26
  • 图像处理与视觉感知---期末复习重点(4)
  • 【前端】-【性能优化常识】
  • Midjourney AI绘图工具介绍及使用
  • GIMP - GNU 图像处理程序 - 工具栏窗口 (Toolbox) 显示
  • checkpoint 大模型、VAE、LoRA、Embedding、Controlnet这些是什么模型
  • excel创建和部分使用
  • leetcode88-Merge Sorted Array
  • Intellij IDEA构建Android开发环境
  • 业务服务:xss攻击
  • QT_day5:使用定时器实现闹钟
  • C# wpf 嵌入hwnd窗口
  • DNS协议 是什么?说说DNS 完整的查询过程?
  • Android Studio:GIT提交项目到远程仓库
  • Android单元测试 - 几个重要问题
  • input的行数自动增减
  • Javascript弹出层-初探
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • node学习系列之简单文件上传
  • October CMS - 快速入门 9 Images And Galleries
  • Python学习笔记 字符串拼接
  • sublime配置文件
  • use Google search engine
  • vue:响应原理
  • 阿里云应用高可用服务公测发布
  • 从伪并行的 Python 多线程说起
  • 服务器从安装到部署全过程(二)
  • 解析带emoji和链接的聊天系统消息
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前嗅ForeSpider教程:创建模板
  • 微信开源mars源码分析1—上层samples分析
  • 一道闭包题引发的思考
  • 用Canvas画一棵二叉树
  • MPAndroidChart 教程:Y轴 YAxis
  • 函数计算新功能-----支持C#函数
  • (26)4.7 字符函数和字符串函数
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (zhuan) 一些RL的文献(及笔记)
  • (二)windows配置JDK环境
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)winform之ListView
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 使用反射注册事件
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @RestController注解的使用
  • @SuppressLint(NewApi)和@TargetApi()的区别