SpringBoot Cace是一个很好的缓存框架,可以与各种缓存实现兼容。当数据量较大时,应大多数使用REDIS。
本文重点介绍了Springboot和Redis集成和使用的关键过程,并给出了核心点的描述,并附加了相应的官方文档链接以供参考。
将以下配置添加到项目pom.xml:
将以下注释添加到项目启动类:
REDIS连接信息包括地址,端口,超时时间(秒)和连接池。您可以根据需要选择几种配置。
将以下配置添加到项目应用程序。
Springboot使用的REDIS客户端是生菜,而不是Jedis。如果您需要使用连接池,则需要添加额外的Maven依赖项:
REDIS连接配置属性参考,请注意属性前缀为** spring.redis。***。
Springboot支持多个不同名称的缓存。需要提前配置缓存名称,并且可以指定缓存的到期时间。对于redis,某个名称的缓存实际上是redis中的一个或多个键,带有前缀的名称。缓存的到期时间是指钥匙的此部分的到期时间。
将以下配置添加到项目应用程序。
引用缓存配置属性,请注意** spring.cache.redis的属性前缀。***。
默认情况下,所有缓存的到期时间都是相同的。如果您需要为不同的缓存设置不同的到期时间,则可以自己扩展并参考官方示例。
Springboot缓存可以帮助我们自动缓存某种方法的结果(返回值)。使用时,我们只需要在方法@cachable上添加注释,并指定缓存名称:
缓存名称为cos :: url,当呼叫方法生成presignedurl时,Springboot缓存将自动检查该方法的结果是否已在Redis中缓存。如果已缓存,它将通过缓存的结果直接返回。如果未执行该方法;如果该方法将不执行;如果没有缓存,则将执行该方法以获取结果,并且缓存结果将返回到呼叫者。
缓存
当密钥生成REDIS检查或缓存结果时,需要一个键。SpringBoot缓存使用cachename(cos :: url)和parametervalue生成密钥。规则如下:规则如下:
默认密钥生成
同步同步是注释@cachable的属性。该值可以是真实的或错误:
如果Sync = false(默认),当多线程环境称为genatePrsignedUrl时,当redis没有缓存结果时,可以多次执行该方法。执行一次。
有条件的缓存
条件条件是@cachable的属性。它的值是spel表达式。表达的计算结果可以是真实的或错误:
如果表达式的计算结果为真,则表示缓存方法;如果表达式的计算结果是错误的,则意味着缓存方法不是结果。
有条件的缓存
Spel表达式可以使用该方法的参数值,也可以调用该方法所在的其他方法,例如:
当参数名称的参数值小于32时,方法结果将被缓存;
Check()必须打开(公共),并且退货值必须为布尔值;只有当check()返回值为true时,该方法将被缓存。
可用的缓存SPEL评估环境
使用这些限制,如果该方法生成presigneturl是通过其他BEAN的其他方法调用的,则缓存将不会生效。也就是说,当该方法生成其他BEAN方法调用该方法时,缓存将生效。原因主要与Spring的代理机制有关。有关详细信息,请参阅:spring cache @cachable -cachable -not在调用同一bean的fring frlir方法时。
Springboot缓存还支持其他注释,您可以参考基于声明的宣传缓存。
如果我们需要自己实现缓存逻辑,SpringBoot Cache提供了一个工具模板类,该类通常用于Redis:redisteSemplate,它将创建一个实例。使用时直接注入:
重新标志支持仿制药,我们可以根据自己的需求注入一个或多个实例;如果键值的类型是字符串,则可以直接使用StringRedistemplate。
当Springboot用于集成Redis时,如果您只需要读取或缓存数据,则直接使用注释的方法可以避免与使用ReDistemplate的方法相比,可以避免大量的高速缓存冗余代码,并更多地关注业务逻辑;,实际使用不良,可以灵活地与两者相结合,以优先考虑注释方法。当注释方法受到限制时,然后将重新定板结合在一起作为补充。
原始:https://juejin.cn/post/709863430929244168