springboot 高级教程 jetcache 二级缓存用法

这篇具有很好参考价值的文章主要介绍了springboot 高级教程 jetcache 二级缓存用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

多级缓存实际上是在二级缓存的基础上,为了更好地提高系统的性能和可靠性,更适用于大型分布式系统的应用场景。

使用多级缓存的原因包括:

  1. 数据缓存分层:不同级别的缓存可以被用来缓存不同类型、不同频率访问的数据。在这种情况下,系统会先在本地缓存中寻找数据,如果找不到再到其他级别的缓存中查找,并最终到数据库中获取数据。这种方式可以更快地响应不同类型的请求,并且让处理分布式系统访问的数据变得更容易。

  2. 优化系统响应时间:多级缓存的分层结构使之非常适用于尽快响应用户数据请求的场景。对于访问频率较高的数据,缓存在更接近应用程序的本地缓存中,可以快速获取;对于访问频率较低的数据,存储在较远缓存层级上,直到有需要时才会访问;在最后一级缓存搜索失败后,才会从数据库中获取所需的数据。这种方式在响应时间方面非常优秀。

  3. 提高可靠性和容错性:多级缓存通常包括主缓存和备用缓存,如果主缓存挂了,系统会自动切换到备用缓存,保证系统正常运行,数据不会丢失。

  4. 降低资源开销:多级缓存可以大大降低系统资源的使用成本。将频繁访问的数据将存入低延迟、高效的本地缓存中,避免大量的RPC(远程过程调用)和数据库查询。

总的来说,多级缓存旨在提高系统的性能和可靠性,并降低资源利用率。在大规模、高计算量、分布式系统中使用多级缓存是必不可少的

Spring Boot是Spring Framework的增强版本,可以快速开发基于Spring的应用程序。在Spring Boot中使用Jetcache的二级缓存也是极为简单的。

下面是Spring Boot Jetcache二级缓存的用法:

  1. 添加Jetcache和Hazelcast的依赖

在pom.xml文件中添加Jetcache和Hazelcast的依赖。

<dependency>
    <groupId>com.alicp.jetcache</groupId>
    <artifactId>jetcache-starter-redis</artifactId>
    <version>2.5.3</version>
</dependency>
<dependency>
    <groupId>com.hazelcast</groupId>
    <artifactId>hazelcast-spring</artifactId>
    <version>4.1.1</version>
</dependency>
  1. 配置JetCache
@SpringBootApplication
@EnableCreateCacheAnnotation  //启用使用注解的方式创建缓存
public class Springboot19CacheApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(Springboot19CacheApplication.class, args);
    }
 
}

在application.properties配置文件中添加JetCache的配置,来配置二级缓存。

# JetCache配置
jetcache.cacheType=default
jetcache.default.local.expireAfterWrite=10m
jetcache.default.local.expireAfterAccess=10m
jetcache.default.local.limit=1000
jetcache.default.local.nullable=true
jetcache.default.local.keyConvertor=tiger.pathos.car.impl.JacksonKeyConvertor
jetcache.default.remote.expireAfterWrite=10m
jetcache.default.remote.expireAfterAccess=10m
jetcache.default.remote.serializer=hazelcast
jetcache.default.remote.addresses=localhost:5701

cacheType指定缓存提供者,默认为default。expireAfterWrite和expireAfterAccess表示写入时间和最后访问时间后的到期时间。limit为本地缓存大小。nullable表示是否缓存null值。keyConvertor指定使用的键值转换器。remote.serializer表示远程缓存使用的序列化器。remote.addresses指定远程缓存的地址。

  1. 使用注解添加缓存

在需要缓存处理的方法上使用JetCache提供的注解。

示例方法:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

    @Override
    @Cached(name = "userCache:", key = "#id", expire = 7200, cacheType = CacheType.BOTH)
    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }
}

在这个示例中,使用@Cached注解将getUserById方法中的结果缓存。name即为缓存的名称,key为缓存的键值,expire为缓存过期的时间,cacheType即为缓存类型。

  1. 测试

使用Junit等测试框架编写测试用例,测试Spring Boot应用程序中的JetCache二级缓存是否成功启用,缓存是否生效。

@SpringBootTest
@RunWith(SpringRunner.class)
public class UserServiceImplTest {
   
    @Autowired
    private UserService userService;
    
    @Test
    public void testGetUserById() {
        Long id = 1L;
        User user = userService.getUserById(id);
        // TODO 测试缓存是否生效
    }
    
}

至此,Spring Boot应用程序就已经成功使用了JetCache的二级缓存。

加群交流(备注java开发)(微信号:java-zhilu)文章来源地址https://www.toymoban.com/news/detail-474864.html

到了这里,关于springboot 高级教程 jetcache 二级缓存用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JetCache 缓存开源组件设计精要

    ​作者:张隆 阿里电影演出技术中心团队 本文将为大家介绍JetCache缓存开源组件的前世今生,并剖析了JetCache的工作原理及设计优势。 2013年,JetCache诞生于 [ 阿里彩票 ],作者是 [ huangli ] 凭借得天独厚的Tair支持和丰富的Spring生态注解支持,赢得了大家的喜爱。 2015年,随着

    2023年04月15日
    浏览(33)
  • JetCache 阿里开源的缓存框架

    JetCache 阿里开源的缓存框架 JetCache 简介 JetCache 原理 JetCache 特性 JetCache 和 SpringCache 的对比 简单使用 JetCache 引入依赖 进行配置 示例代码 参考资料

    2024年02月11日
    浏览(41)
  • 翻译: Streamlit从入门到精通 高级用法缓存Cache和Session 五

    Streamlit从入门到精通 系列: 翻译: Streamlit从入门到精通 基础控件 一 翻译: Streamlit从入门到精通 显示图表Graphs 地图Map 主题Themes 二 翻译: Streamlit从入门到精通 构建一个机器学习应用程序 三 翻译: Streamlit从入门到精通 部署一个机器学习应用程序 四 现在您已经了解了 Streamli

    2024年01月18日
    浏览(47)
  • 【springboot】缓存之@Cacheable、@CachePut、@CacheEvict的用法

    一、注解参数说明 1.1 属性说明 1.1.1 value/cacheNames 属性 1.这两个属性代表的意义相同 2.用来指定缓存组件的名称,将方法的返回结果存进缓存的名称 3.定义为数组时,可以存到多个缓存key中 1.1.2 key属性 1.指定缓存数据的key 2.redis作为缓存时,redis中的key为value::key 3.方法没有参

    2024年02月06日
    浏览(55)
  • 黑马Redis视频教程高级篇(二:多级缓存)

    目录 一、什么是多级缓存? 二、JVM进程缓存 2.1、导入案例 2.2、初识Caffeine 2.3、实现JVM进程缓存 2.3.1、需求 2.3.2、实现 三、Lua语法入门 3.1、初识Lua 3.2、HelloWord 3.3、变量和循环 3.3.1、Lua的数据类型 3.3.2、声明变量 3.3.3、循环 3.4、条件控制、函数 3.4.1、函数 3.4.2、条件控制

    2024年02月09日
    浏览(37)
  • 手写SpringBoot3的starter及git高级用法

    新版Spring Boot3.X和旧版SpringBoot2.7之前自定义Starter区别 - SpringBoot2.7之前 META-INF/spring.factories文件里添加org.springframework.boot.autoconfigure.EnableAutoConfiguration=XXAutoConfiguration - SpringBoot2.7推出新的自动配置 在META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件里添加配置类

    2024年02月01日
    浏览(37)
  • 现代CMake高级教程 - 第 7 章:变量与缓存

    双笙子佯谬老师的【公开课】现代CMake高级教程课程笔记 重复执行 cmake -B build 会有什么区别? 可以看到第二次的输出少了很多,这是因为 CMake 第一遍需要检测编译器和 C++ 特性等比较耗时,检测完会把结果存储到缓存中,这样第二遍运行 cmake -B build 时就可以直接用缓存的值

    2024年02月02日
    浏览(41)
  • 黑马Redis视频教程高级篇(一:分布式缓存)

    目录 分布式缓存 一、Redis持久化 1.1、RDB持久化 1.1.1、执行时机 1.1.2、RDB原理 1.1.3、小结 1.2、AOF持久化 1.2.1、AOF原理 1.2.2、AOF配置 1.2.3、AOF文件重写 1.3、RDB与AOF对比 二、Redis主从 2.1、搭建主从架构 2.1.1、集群结构 2.1.2、准备实例和配置 2.1.3、启动 2.1.4、开启主从关系 2.1.5、

    2024年02月08日
    浏览(53)
  • Mybatis 一级缓存和二级缓存 与hibernate 一级缓存和二级缓存 有什么区别?

    MyBatis和Hibernate都是流行的持久化框架,它们都提供了一级缓存和二级缓存的功能,但在实现和使用上有一些区别。 一级缓存: - MyBatis的一级缓存是默认开启的,它是在SqlSession级别的缓存,也就是在同一个SqlSession中,如果多次查询同样的SQL语句,那么只会执行一次数据库查

    2024年02月15日
    浏览(33)
  • MyBatis的缓存,一级缓存,二级缓存

    10.1、MyBatis的一级缓存 一级缓存是SqlSession级别的,通过 同一个 SqlSession对象 查询的结果数据会被缓存,下次执行 相同的查询语句 ,就 会 从缓存中(缓存在内存里) 直接获取,不会重新访问数据库(数据库在磁盘里),也就是说就执行一次sql。一级缓存 默认开启 。 使一级

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包