本文将在春季介绍缓存技术的使用。
常见的缓存技术包括本地缓存和REDIS缓存。
Spring Cache是Spring随附的缓存解决方案。它很容易使用。它可以使用本地缓存或REDIS缓存。
缓存实现方案配置Spring Cache不提供特定的缓存实现,而仅提供一组接口和代码规范,配置,注释等。作为框架中的缓存,共有9个选项
在配置文件中,您可以使用指定的缓存实现方案,如下所示。
如果未指定属性值,则值为默认值。内存的使用被用作缓存,其基础存储基于。
自定义配置在配置文件中。使用指定的缓存实现方案后,可以执行一些自定义配置。
@enablecaching打开可缓存@cachable,以返回该方法以保存结果@cacheput @cacheput更新数据@cacheevick,以删除Cache的复杂cache中的数据实现。基于注释的缓存功能
使用和以下XML配置,功能是等效的。
@cachable注释的属性值如下所示。
值缓存的名称必须指定至少一个键缓存键,该键可以为空,也可以使用SPEL表达式指定条件缓存的条件。您可以使用指定的SPEL表达式。如果获得的值为真,则不会将返回值放在缓存中当缓存不存在时,允许执行相应的方法(例如请求db)。其他线程将阻塞,直到该方法返回的结果写入下面的缓存。
@Cachable的价值,钥匙和密钥的相应关系Redis中的字段首先给出结论
下面给出样本以加深理解。
将REDIS用作缓存实现方案并使用缓存设置,它将在REDIS中产生一个关键值对象(key)作为哈希对象。该对象是相应的值,如下图所示。
@cacheconfig@缓存
如果缓存分解系统中有热数据缓存,目前,大量请求可以访问热数据,并且您无法直接从缓存中读取数据库。数据库很容易被高速和第四请求打破,导致缓存破坏了透度
使用Spring Cache时,注释的属性可用于使用同步方法。当缓存不存在时,只允许一个线程执行相应的方法(例如请求db),而其他线程将阻止,直到结果返回缓存为止。
缓存的数据穿透了对用户的访问既不在缓存中也不在数据库中。然后当大量此类请求出现时,数据库的压力会急剧增加,这是缓存穿透的问题。
使用Spring Cache时,如果将REDIS用作缓存实现方案,则可以在配置文件中指定以下属性,以避免缓存渗透。
Spring Cache是Spring随附的缓存解决方案。
JetCache是一种基于Java的缓存系统包装,它提供了一个统一的API和注释来简化Cache.jetcache的使用。JETCACHE提供了比SpringCache更强大的注释,该注释可以支持TTL,两个级别的缓存,并提供了分布式自动刷新,并提供了刷新。用于手动缓存操作的缓存接口。
原始:https://juejin.cn/post/709931076409653256