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

建设论坛网站用什么cms网站收录情况查询

建设论坛网站用什么cms,网站收录情况查询,什么是网站的入口,新建免费网站Spring Cache 是 Spring 框架提供的缓存抽象层,通过统一的 API 和注解简化缓存操作,支持多种缓存实现(如 Redis、EhCache、Caffeine 等)。其核心目标是减少重复计算,提升系统性能,同时保持代码简洁性。 1. …

Spring Cache 是 Spring 框架提供的缓存抽象层,通过统一的 API 和注解简化缓存操作,支持多种缓存实现(如 Redis、EhCache、Caffeine 等)。其核心目标是减少重复计算提升系统性能,同时保持代码简洁性


1. 核心概念

(1) 缓存抽象接口

Spring Cache 定义了一套标准接口,与具体缓存实现解耦:

  • Cache:代表一个缓存实例(如 Redis 的一个键空间)。

  • CacheManager:管理多个 Cache 实例。

  • KeyGenerator:生成缓存键的策略。

  • CacheResolver:动态解析使用的缓存。

(2) 支持的缓存实现
  • 本地缓存:Caffeine、EhCache、ConcurrentMapCache

  • 分布式缓存:Redis、Memcached、Hazelcast

  • 其他:JCache(JSR-107)、GemFire


2. 核心注解

(1) @Cacheable
  • 用途:标记方法的返回值需要缓存。

  • 触发条件:方法执行前检查缓存,若存在则直接返回结果,否则执行方法并缓存结果。

  • 关键参数

    • value/cacheNames:指定缓存名称(对应 CacheManager 中的缓存实例)。

    • key:自定义缓存键(支持 SpEL 表达式)。

    • condition:缓存条件(满足条件才缓存)。

    • unless:排除条件(满足条件不缓存)。

示例

@Cacheable(value = "users", key = "#id", unless = "#result == null")
public User getUserById(Long id) {return userRepository.findById(id).orElse(null);
}

(2) @CachePut
  • 用途:更新缓存,无论缓存是否存在,都会执行方法并缓存结果。

  • 适用场景:数据更新后强制刷新缓存。

示例

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

(3) @CacheEvict
  • 用途:删除缓存条目。

  • 关键参数

    • allEntries:是否清空整个缓存(默认 false)。

    • beforeInvocation:是否在方法执行前清除缓存(默认 false,即方法执行后清除)。

示例

@CacheEvict(value = "users", key = "#id")
public void deleteUser(Long id) {userRepository.deleteById(id);
}

(4) @Caching
  • 用途:组合多个缓存操作。

  • 示例

@Caching(cacheable = @Cacheable(value = "users", key = "#username"),evict = @CacheEvict(value = "tokens", key = "#username")
)
public User getUserByUsername(String username) {// ...
}

(5) @CacheConfig
  • 用途:在类级别统一配置缓存的公共属性(如 cacheNameskeyGenerator)。

  • 示例

@CacheConfig(cacheNames = "products")
public class ProductService {@Cacheablepublic Product getProduct(Long id) { ... }
}

3. 配置与集成

(1) 启用缓存

在 Spring Boot 主类或配置类上添加 @EnableCaching

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

(2) 选择缓存实现

以 Caffeine(高性能本地缓存)为例:

  1. 添加依赖

xml

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId>
</dependency>

运行 HTML

  1. 配置缓存策略

yaml

# application.yml
spring:cache:type: caffeinecaffeine:spec: maximumSize=500, expireAfterWrite=10m

(3) 自定义 KeyGenerator

实现 KeyGenerator 接口:

public class CustomKeyGenerator implements KeyGenerator {@Overridepublic Object generate(Object target, Method method, Object... params) {return method.getName() + "_" + Arrays.toString(params);}
}

注册到 Spring 容器:

@Configuration
public class CacheConfig {@Beanpublic KeyGenerator customKeyGenerator() {return new CustomKeyGenerator();}
}

使用自定义 KeyGenerator:

@Cacheable(value = "users", keyGenerator = "customKeyGenerator")
public User getUser(Long id) { ... }

4. 高级特性

(1) 条件缓存

通过 condition 和 unless 动态控制缓存行为:

@Cacheable(value = "users", key = "#id", condition = "#id > 1000", unless = "#result.age < 18")
public User getUser(Long id) { ... }

(2) 缓存同步

多线程环境下,使用 sync 参数同步缓存生成:

@Cacheable(value = "users", key = "#id", sync = true)
public User getUser(Long id) { ... }

(3) 多级缓存

结合本地缓存与分布式缓存(如 Caffeine + Redis):

  1. 本地缓存用于高频访问数据。

  2. 分布式缓存用于数据共享和持久化。


5. 最佳实践

(1) 缓存粒度控制
  • 细粒度缓存:缓存单个对象(如用户信息)。

  • 粗粒度缓存:缓存集合或复杂查询结果(需注意数据一致性)。


(2) 缓存穿透/击穿/雪崩防护
  • 穿透:缓存空值(unless = "#result == null")。

  • 击穿:加锁(sync = true)或使用分布式锁。

  • 雪崩:设置随机过期时间。


(3) 数据一致性
  • 写策略:使用 @CachePut 或 @CacheEvict 保证缓存与数据库同步。

  • 事务支持:将缓存操作与事务绑定(需配置 TransactionAwareCacheManagerProxy)。


6. 调试与监控

(1) 日志输出

在 application.properties 中启用缓存日志:

properties

logging.level.org.springframework.cache=TRACE
(2) 监控指标

Spring Boot Actuator 提供缓存指标:

xml

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

运行 HTML

访问 /actuator/caches 查看缓存信息。


总结

Spring Cache 通过注解和抽象层简化了缓存集成,开发者只需关注业务逻辑,无需深入底层实现细节。合理使用缓存可显著提升系统性能,但需注意数据一致性缓存策略的设计。对于复杂场景,可结合多种缓存实现(如本地缓存 + Redis)实现多级缓存架构。

http://www.dtcms.com/wzjs/90449.html

相关文章:

  • 南充北京网站建设微信朋友圈推广
  • 网上买手表哪个网站可以买到正品第一接单网app地推和拉新
  • 建设网站成都seo搜索引擎优化案例
  • 网站上的vR场景贴图怎么做的百度搜索引擎投放
  • 政府 教育 网站 案例交换链接平台
  • 网站建设与管理 ppt常见的推广平台有哪些
  • 网站后台尺寸一般做多大的北京网站seo技术厂家
  • 建物流网站口碑营销的案例及分析
  • wordpress 宅男猫网站广告联盟点击赚钱平台
  • 网站建设开发程序代码身边的网络营销案例
  • 深圳网站建设公司哪家专业seo在哪可以学
  • 企业网站建设兴田德润电话电子商务专业就业方向
  • 制作网页的语言seo是网络优化吗
  • 网站提升收录西安seo排名优化推广价格
  • 汕头市作风建设的网站广东新闻今日最新闻
  • 邯郸房产网签怎么查询长沙网站推广排名优化
  • 广告公司简介模板免费下载武汉seo工作室
  • 企业网站的建立让手机变流畅的软件下载
  • 网站怎么做下载网页代码吗seo平台优化服务
  • 网站 做 app开发网络营销做得好的公司
  • 网站模版 之星今日的最新新闻
  • 教你如何用天翼云盘做网站做网站一般需要多少钱
  • 蜘蛛互联网站建设网址百度刷排名
  • 做网站怎么套用模板2021年年度关键词排名
  • 网站建设属于什么职位类别天眼查企业查询入口
  • 免费空间访客100个网站人教版优化设计电子书
  • 设计师案例网站seo外链建设的方法
  • 网站建设营销方案查排名的软件有哪些
  • 如何利用模板做网站网站优化怎么做
  • 罗湖附近公司做网站建设福州专业的seo软件