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

网站开发知识视频教程/大连百度seo

网站开发知识视频教程,大连百度seo,品牌推广宣传词,网络工程公司的业务Spring Cache Spring Cache是Spring框架提供的缓存抽象层,通过注解和自动化配置,简化应用中对缓存的操作,支持多种缓存实现(如Redis、Ehcache、Caffeine)。 1. 核心特性 声明式缓存:通过注解(…

Spring Cache

Spring Cache是Spring框架提供的缓存抽象层,通过注解和自动化配置,简化应用中对缓存的操作,支持多种缓存实现(如Redis、Ehcache、Caffeine)。

1. 核心特性

  • 声明式缓存:通过注解(如@Cacheable、@CacheEvict)声明缓存行为,无需手动编写缓存逻辑。
  • 多缓存实现支持:兼容Redis、Ehcache、Caffeine等缓存工具,通过统一接口切换实现。
  • 与Spring无缝集成:基于AOP动态代理,拦截方法调用自动处理缓存。
  • 灵活的缓存策略:支持条件缓存(condition)、缓存键生成(key)、缓存过期等配置。

2. 核心注解

注解作用常用参数示例
@EnableCaching开启缓存注解功能,通常加在启动类上
@Cacheable方法结果缓存。在方法执行前先查询缓存中是否有数据,如果有数据则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中value(缓存名)、key(键)、condition(条件)缓存数据库查询结果
@CachePut更新缓存,将方法的返回值放到缓存中value(缓存名)、key(键)、condition(条件)数据更新后刷新缓存
@CacheEvict删除缓存,将一条或多条数据从缓存中删除allEntries(清空所有键)、beforeInvocation(执行前删除)数据清除时删除缓存

1. @Cacheable:

       作用:标记方法的结果需要被缓存。当方法被调用时,先检查缓存是否存在对应键值,若存在则直接返回缓存值,否则执行方法并将结果存入缓存。

        使用场景:查询操作(如数据库查询、复杂计算等)。

        示例:

@Cacheable(value = "userCache", key = "#userId", condition = "#userId != null")
public User getUserById(Long userId) {return userRepository.findById(userId).orElse(null);
}

2. @CachePut:

        作用:更新缓存。无论缓存是否存在,都会执行方法,并将结果更新到缓存中。

        适用场景:新增或更新操作(如更新用户信息后同步缓存)。

        示例:

@CachePut(value = "userCache", key = "#user.id")
public User updateUser(User user) {return userRepository.save(user);
}

3. @CacheEvict

        作用:删除缓存。根据条件清除指定键或整个缓存区的数据。

        适用场景:删除操作(如用户删除后清理缓存)。

        示例:

@CacheEvict(value = "userCache", key = "#userId")
public void deleteUser(Long userId) {userRepository.deleteById(userId);
}// 清空整个缓存区
@CacheEvict(value = "userCache", allEntries = true)
public void clearAllUserCache() {}

3.使用步骤(以Redis为例)

添加依赖:

<!-- Spring Boot Starter 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>

配置缓存类型与Redis:

# application.properties
spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=6379
# 可选:设置缓存过期时间(单位:毫秒)
spring.cache.redis.time-to-live=60000

启用缓存:在启动类添加@EnableCaching

@SpringBootApplication
@EnableCaching
public class MyApp { ... }

在Service层使用注解:

// 仅当参数id>10时缓存
@Cacheable(value = "users", condition = "#id > 10")// 结果不为null时缓存
@Cacheable(value = "users", unless = "#result == null")

4. 缓存键与条件控制

自定义缓存键(SpEL表达式)

@Cacheable(value = "orders", key = "#userId + ':' + #status")
public List<Order> getOrdersByUserAndStatus(Long userId, String status) { ... }

条件缓存(condition和unless)

// 仅当参数id>10时缓存
@Cacheable(value = "users", condition = "#id > 10")// 结果不为null时缓存
@Cacheable(value = "users", unless = "#result == null")

5. 适用场景

  1. 高频读低频写:如商品详情页、用户信息查询。
  2. 耗时计算:缓存复杂计算结果(如报表生成)。
  3. API限流:缓存接口调用次数。
  4. 会话管理:分布式环境下用户状态缓存。

Spring Cache通过简化缓存逻辑与代码解耦,显著提升了开发效率。结合Redis等高性能缓存工具,能够轻松应对高并发场景。

http://www.whsansanxincailiao.cn/news/31941192.html

相关文章:

  • 天善问答wordpress/单页网站怎么优化
  • 怎么给自己的公司做网站/黑马程序员培训机构官网
  • 网页制作正版网站/百度手机应用市场
  • 购物网站建设得背景/友情链接举例
  • 水平b2b电子商务网站有哪些/网络营销公司全网推广公司
  • 做调查赚钱靠谱的网站有哪些/手机网站百度关键词排名查询
  • 传奇游戏排行榜/优化网站技术
  • 网站建设公司工作流程/爱站网关键词查询网站的工具
  • 阿里云网站备案好了 怎么建站/泉州关键词优化软件
  • 1688网站批发/google手机官网
  • 东莞网站建设 餐饮/舆情通
  • dede门户网站模板/厨师培训学校
  • 东莞模板建站哪家好/sem竞价课程
  • 婚恋网站模板下载/外贸商城建站
  • 网站投放广告怎么做/wordpress建站公司
  • 网站怎么做按钮/手机百度网盘网页版登录入口
  • 网站制作 杭州公司/优化课程
  • 西安做网站公司必达/网络营销公司排行榜
  • web网站开发里怎么切换界面/神马搜索seo优化排名
  • 昆明网站建设外包/东莞网络优化调查公司
  • 网站源码上传到空间以后怎么做/交换链接的其它叫法是
  • 做网站浏览器/网站优化seo怎么做
  • 山东嘉邦家居用品公司网站 加盟做经销商多少钱 有人做过吗/互联网营销培训平台
  • 网站群管理平台建设/合肥seo整站优化网站
  • 品牌网站建设流程图/重庆seo多少钱
  • 光谷网站建设公司/我是站长网
  • 网站集约化建设的总体情况/网站建设及推广优化
  • 网站排名不可有利就前/百度招商加盟推广
  • 群英云服务器/江阴网站优化公司
  • 网站是怎么做/肇庆seo按天收费