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

孟州网站百度收录提交接口

孟州网站,百度收录提交接口,广东省农业农村厅职称评审,北京商城网站建设费用一. 介绍Spring Cache 是 Spring 框架提供的缓存抽象层,它简化了在应用中添加缓存功能的开发工作。通过 Spring Cache,开发者无需关注具体缓存实现的细节,只需通过注解就能快速实现方法级别的缓存管理。核心特点1. 与具体缓存实现解耦&#x…

一. 介绍

Spring Cache 是 Spring 框架提供的缓存抽象层,它简化了在应用中添加缓存功能的开发工作。通过 Spring Cache,开发者无需关注具体缓存实现的细节,只需通过注解就能快速实现方法级别的缓存管理。

核心特点

1. 与具体缓存实现解耦:

支持多种缓存技术(如 Caffeine、EhCache、Redis 等),可通过配置灵活切换

2. 注解驱动:

通过简单的注解即可实现缓存的增、删、改、查操作

3. 支持多种缓存操作

包括缓存数据存储、读取、更新和清除

4. 事务感知:

能与 Spring 事务结合,确保缓存与数据的一致性

核心注解说明

注解作用关键属性
@Cacheable缓存方法结果,优先从缓存读取key:缓存键;condition:条件缓存
@CachePut执行方法后更新缓存(方法必执行)key:缓存键
@CacheEvict从缓存中删除数据key:删除指定键;allEntries=true:删除所有
@Caching组合多个缓存注解(如同时更新和删除)包含 cacheableputevict 等属性
@CacheConfig类级别配置缓存名称、键生成器等cacheNames:默认缓存名称

二. 使用步骤

1.导入maven坐标

使用的缓存中间件为redis

<!-- Spring Cache 核心依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency><!-- Redis 缓存实现(可选,根据需要替换) -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2. 在Spring启动类上添加@EnableCaching注解开启缓存功能

@SpringBootApplication
@Slf4j
@EnableCaching//开启缓存注解功能
public class SkyApplication {public static void main(String[] args) {SpringApplication.run(SkyApplication.class, args);log.info("server started");}
}

3. 在业务方法上使用缓存注解

@Service
@CacheConfig(cacheNames = "users") // 类级别统一指定缓存名称
public class UserService {// 1. 查询用户:缓存结果,键为用户 ID@Cacheable(key = "#id") // 缓存键 = id,如 "users::1"public User getUserById(Long id) {// 实际业务:查询数据库(仅第一次执行,后续从缓存获取)System.out.println("查询数据库,用户 ID:" + id);return userRepository.findById(id).orElse(null);}// 2. 更新用户:更新缓存(方法始终执行,结果存入缓存)@CachePut(key = "#user.id") // 缓存键 = user.idpublic User updateUser(User user) {// 实际业务:更新数据库System.out.println("更新数据库,用户 ID:" + user.getId());return userRepository.save(user);}// 3. 删除用户:清除缓存@CacheEvict(key = "#id") // 清除键 = id 的缓存public void deleteUser(Long id) {// 实际业务:删除数据库记录System.out.println("删除数据库,用户 ID:" + id);userRepository.deleteById(id);}// 4. 清除所有缓存(如批量删除场景)@CacheEvict(allEntries = true) // 清除 "users" 缓存中所有数据public void clearAllUsersCache() {// 无需业务逻辑,仅用于清除缓存}
}

@Cacheable的执行逻辑:每次调用有这个注解的方法时,先去redis缓存中查询数据,如果有,直接将缓存中的数据返回,不执行方法;如果没有,执行方法,调用数据库,将方法的返回值存入redis中,这样一来,下次执行方法就不用查询数据库,提高了效率

@CacheEvict:在修改员工信息,批量删除员工,启用停用员工等场景下,会使用allEntries = true(清空全部缓存)

现在有一个场景:一个公司内有几个部门,部门下分别有各自的员工,redis中以部门id为键存储员工信息,为什么删除或者新增一个用户就要将员工所在的部门的缓存清空呢,原因是这样的增删操作并不频繁,而精确在redis中操作比较麻烦,且在删除或者新增时,redis中的缓存已经和数据库中的数据不一致,所以需要清空缓存,下次查询操作时又将新的数据缓存到redis

http://www.dtcms.com/a/612363.html

相关文章:

  • 中山中小企业网站制作google中文搜索引擎
  • 网站建设情况总结茶网站建设方案
  • 怎么提高自己网站的知名度巨人网络公司简介
  • 网站宣传用了最字网页设计基础实训计划
  • 手机网站建设开什么类型的票网站建设政务新媒体
  • 学做网站丛什么开始免费网上申请注册
  • 一个主机怎么做两个网站如何在网站投放广告
  • 云南建设厅和网站怎么做会员积分网站
  • 免费做网站哪里有平面设计专业哪个学校好
  • wordpress主题的网站模板一键优化ppt
  • 简述网站开发流程 旅游建筑网官网登录入口
  • 南京手机网站开发有没有能帮人快速网站备案的机构
  • 用什么自己做网站可以免费发布信息的网站有哪些
  • 网站logo是什么seo专业优化公司
  • 视频模板免费制作seo排名影响因素主要有
  • 上海外贸网站设计秦皇岛市建设局
  • 信仰类型的企业网站网站上传附件目录格式
  • 我想开个网站网站建设层级图
  • 网站域名以co与com有什么不同中国黄金集团建设有限公司网站
  • wordpress做x站主题龙岗网页设计
  • 国外网站建设现状图分析软件二次开发什么意思
  • 中国医院建设协会网站首页做网站每年都要费用的吗
  • 青浦网站设计制作建筑设计公司职位有哪些
  • 网站后台文字编辑器怎么做好推广和营销
  • 商业网站建设公司推荐太原网站优化常识
  • 视觉学习篇——卷积与神经网络:从原理到应用(量大管饱)
  • pc网站转换成微网站营销网站模版
  • 中国建设综合门户网站开篇网站推广
  • 静态网站上下篇代码网站页面设计规范
  • 响应式和非响应式网站东莞网站推广优化网上推广公司