SpringBoot配置第三方专业缓存技术jetcache远程缓存方案和本地缓存方案

JetCache

是一个基于 Java 的分布式缓存解决方案,旨在提供高性能和可扩展性。它支持多种后端存储,如 Redis、Hazelcast、Tair 等,可以作为应用程序的缓存层,有效地提升数据访问性能和响应速度。

JetCache 的主要特点包括:

  1. 多种后端支持:可以根据需求选择不同的后端存储,如 Redis、Hazelcast 等,灵活适配不同的应用场景。

  2. 注解驱动:提供注解方式简化缓存的配置和使用,使得开发者能够轻松地在业务逻辑中加入缓存支持,减少手动编码工作。

  3. 二级缓存支持:支持二级缓存,允许在内存缓存和分布式缓存之间进行数据的存取,有效平衡性能和一致性要求。

  4. 缓存预热和失效策略:提供缓存预热功能,支持多种失效策略,如基于时间、基于数量、基于引用等。

  5. 高性能和可扩展性:设计上考虑了并发访问和数据一致性问题,以支持高并发和大规模应用场景。

JetCache 在企业级 Java 应用中广泛应用,帮助开发者通过简单的配置和注解,轻松地实现缓存管理,提升系统整体性能和响应速度。

jetcache远程缓存方案

我们之前的缓存控制台过于松散

JetCache 提供了多种远程缓存方案,主要基于不同的后端存储来实现分布式缓存的功能。以下是 JetCache 支持的一些主要远程缓存方案:

  1. Redis:Redis 是 JetCache 的主要后端之一,它提供了高性能的内存存储和持久化功能,适用于需要快速访问和高并发的场景。JetCache 可以通过 Redis 实现分布式缓存,支持多种缓存操作和数据结构。

  2. Hazelcast:Hazelcast 是一个开源的分布式内存数据网格,JetCache 可以利用 Hazelcast 来实现分布式缓存,支持分布式数据结构和集群管理,适合需要低延迟和高可用性的场景。

  3. Tair:Tair 是阿里云提供的分布式缓存服务,JetCache 支持通过 Tair 实现远程缓存,具有良好的可扩展性和高性能,适合在阿里云环境中构建应用。

  4. Caffeine:虽然 Caffeine 本身是一个本地缓存库,但 JetCache 也支持将其配置为远程缓存方案。在分布式应用场景中,可以通过 Caffeine 来实现基于内存的快速缓存,同时可以与其他远程缓存方案结合使用。

这些远程缓存方案使得开发者可以根据应用的需求选择合适的后端存储,利用 JetCache 提供的注解驱动和简化配置来管理分布式缓存,提升应用的性能和可扩展性。

本地方案

我们用的是ehcache

远程方案

我们使用的redis memcached

我们手动配置服务器IP地址和端口

但是我们还没有遇到

既能用远程缓存方案又能用本地缓存方案的

我们接下来要学习的jetcache就是

两种缓存方案都能用的

我们启动

我们在业务层接口的实现类里面没有用缓存技术

package com.example.demo.service.impl;

import com.example.demo.domain.SMSCode;
import com.example.demo.service.SMSCodeService;
import com.example.demo.utils.CodeUtils;
import net.rubyeye.xmemcached.MemcachedClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

@Service
public class SMSCodeServiceImpl implements SMSCodeService {

    @Autowired
    private CodeUtils codeUtils;

    @Override
    public String sendCodeToSMS(String tele) {
        String code=codeUtils.generator(tele);
        return code;
    }

    @Override
    public boolean checkCode(SMSCode smsCode) {
        String code=null;
        return smsCode.getCode().equals(code);
    }

}

我们把缓存都拿掉了

没有任何缓存

我们回忆之前的操作

记得好像是要加入各种坐标

<!--        jetcache缓存-->
        <dependency>
            <groupId>com.alicp.jetcache</groupId>
            <artifactId>jetcache-starter-redis</artifactId>
            <version>2.6.2</version>
        </dependency>

接着配置

远程存储 我们选择的是redis存储

jetcache:
  remote:
    default:
      type: redis
      host: localhost
      port: 6379
      poolConfig:
        maxTotal: 50

导入完毕

我们就可以进行使用了

启用使用注解的方式使用缓存

//开启缓存
@EnableCreateCacheAnnotation

这就代表我们可以用注解开启缓存

接下来我们来到业务层的实现类使用缓存

我们直接使用注解创建一个缓存

第一个参数是缓存名

第二个参数是过期时间 是设置缓存的过期时间

之前的过期时间是到处写 但是这里我们进行了一个统一

@CreateCache(name="jetCatch",expire = 3600,timeUnit = TimeUnit.SECONDS)
private Cache<String , String> jetCache;

package com.example.demo.service.impl;

import com.alicp.jetcache.Cache;
import com.alicp.jetcache.anno.CreateCache;
import com.example.demo.domain.SMSCode;
import com.example.demo.service.SMSCodeService;
import com.example.demo.utils.CodeUtils;
import net.rubyeye.xmemcached.MemcachedClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

@Service
public class SMSCodeServiceImpl implements SMSCodeService {

    @Autowired
    private CodeUtils codeUtils;

    //声明缓存空间
    @CreateCache(name="jetCatch",expire = 3600,timeUnit = TimeUnit.SECONDS)
    private Cache<String , String> jetCache;

    @Override
    public String sendCodeToSMS(String tele) {
        String code=codeUtils.generator(tele);
        //放入缓存
        jetCache.PUT(tele,code);
        return code;
    }

    @Override
    public boolean checkCode(SMSCode smsCode) {
        //取出缓存
        String code=jetCache.get(smsCode.getTele());
        return smsCode.getCode().equals(code);
    }

}

启动项目

启动成功

用postman进行测试

测试成功

恭喜

我们同样可以使用单独的配置

加上一个area属性即可

jetcache本地缓存方案

本地缓存方案与远程缓存方案一样

有默认设定还有自定义设置

但是我们在设置本地缓存的时候要设置键缓存

指定键转化为字符串的工具

查看maven工程的依赖

我们发现默认导入了一个依赖

fastjson

jetcache:
  local:
    default:
      type: linkedhashmap
      keyConvertor: fastjson

我们在业务层的实现类里面也要进行修改

//声明缓存空间
@CreateCache(name = "jetCache_",expire = 3600,timeUnit = TimeUnit.SECONDS)
private Cache<String , String> jetCache;

我们启动

查看信息

发现我们的配置的东西都有显示

设置缓存为本地缓存方案

//声明缓存空间
@CreateCache(name = "jetCache_",expire = 3600,timeUnit = TimeUnit.SECONDS,cacheType = CacheType.LOCAL)
private Cache<String , String> jetCache;

本地缓存和远程缓存时共存的

我们可以选择本地缓存的方案和远程的方案

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/717158.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

语音识别相关文章整理目录

一、语音大模型架设与功能实现 使用sherpa-ncnn进行中文语音识别&#xff08;ubuntu22&#xff09;-CSDN博客文章浏览阅读953次&#xff0c;点赞30次&#xff0c;收藏26次。请注意&#xff0c;需要首先安装安装了所有必要的依赖项&#xff0c;包括 CMake、Git 和一个合适的 C/…

Vue路由讲解-05

这里的路由并不是指我们平时所说的硬件路由器&#xff0c;这里的路由就是SPA&#xff08;single page application单页应用&#xff09;的路径管理器。再通俗的说&#xff0c;vue-router就是WebApp的链接路径管理系统。 vue-router是Vue.js官方的路由插件&#xff0c;它和vue.j…

一道全等三角形证明题

接着上次那道题 一道初中一年级几何题解析&#xff0c;再来做一道初中一年级下半学期几何题目&#xff1a; 傍晚丢垃圾散步时看到小小的学生学习群里丢了这个题目&#xff0c;想到一个解法。实在构造不出契合题干阅读材料结论的三角形&#xff0c;索性先根据这结论做一个推论…

云动态摘要 2024-06-17

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [低至1折]腾讯混元大模型产品特惠 腾讯云 2024-06-06 腾讯混元大模型产品特惠&#xff0c;新用户1折起&#xff01; 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…

从《2024年人工智能指数报告》 看AI的最新发展趋势

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 《2024年人工智能指数报告》是由斯坦福大学的“以人为本”人工智能研究所&#xff08;Stanford HAI&#xff09;发布的&#xff0c;具体发布时间…

使用宝塔面板部署Django应用(不成功Kill Me!)

使用宝塔面板部署Django应用 文章目录 使用宝塔面板部署Django应用 本地操作宝塔面板部署可能部署失败的情况 本地操作 备份数据库 # 备份数据库 mysqldump -u root -p blog > blog.sql创建requirements # 创建requirements.txt pip freeze > requirements.txt将本项目…

【unity笔记】三、冰山碰撞变成碎块效果

一、模型准备 共需准备两个模型&#xff0c;一个原始模型&#xff0c;一个破碎后的模型。 破碎后的模型制作教程&#xff1a; 下载Blender 导入原始模型在添加偏好设置中添加Cell Fracture插件&#xff0c;调整模型碎裂效果。导出&#xff0c;保存到项目预制体文件夹。 二、…

3d模型怎么加室外场景渲染的步骤---模大狮模型网

在进行3D模型渲染时&#xff0c;将其放置在室外场景中可以提高渲染效果和真实感。以下是将3D模型加入室外场景的步骤&#xff1a; 1. 选择合适的场景&#xff1a;首先需要选择合适的室外场景&#xff0c;例如城市街道、森林、海滩等等。选择场景时需要考虑模型的大小和比例&…

教育培训系统(FastAdmin+ThinkPHP+Unipp)

引领学习新风尚 &#x1f4da; 引言&#xff1a;教育新篇章 随着科技的不断发展&#xff0c;教育形式也在不断创新与变革。教育培训系统作为这一变革的重要载体&#xff0c;正逐渐改变着我们的学习方式。今天&#xff0c;就让我们一起探索教育培训系统的魅力&#xff0c;看看它…

Navicat和SQLynx功能比较三(数据导出:使用MySQL近千万数据测试)

数据导出的功能在数据库管理工具中是最普遍的功能之一。所以数据导出的功能稳定性和性能也是数据库管理工具是否能很好地满足应用需求的一个考虑因素。 目录 1. 整体比较 2. 示例 2.1 前置环境 2.2 Navicat导出 2.3 SQLynx导出 2.4 性能对比结果&#xff08;690万行数据&…

浙江电信联合中兴通讯取得新突破,完成融合边缘商用验证

前不久&#xff0c;浙江电信联合中兴通讯在融合边缘方面取得新突破&#xff0c;在嘉兴完成了融合边缘的商用验证&#xff0c;并发布了商用版本。接下来&#xff0c;双方在融合边缘方面正式进入商用阶段&#xff0c;有效赋能新质生产力。    随着数字经济的快速发展&#xff0…

github国内加速访问有效方法

这里只介绍实测最有效的一种方法&#xff0c;修改主机的Hosts文件&#xff0c;如果访问github网站慢或者根本无法访问的时候可以采用下面方法进行解决。 1、搜索一个IP查询网站 首先百度搜索选择一个IP查询的网站&#xff0c;这里我用下面这个网站&#xff08;如果该网站失效…

C#——类和对象详情

类和对象 类 类是一种数据结构&#xff0c;它可以包含数据成员&#xff08;常量和字段&#xff09;、函数成员&#xff08;方法、属性、事件、索引器、运算符、实例构造函数、静态构造函数和析构函数&#xff09;以及嵌套类型。类类型支持继承&#xff0c;继承是一种机制&…

【大分享04】OFD版式赋能政务服务电子文件归档和电子档案管理

关注我们 - 数字罗塞塔计划 - 本篇是参加由电子文件管理推进联盟联合数字罗塞塔计划发起的“大分享”活动投稿文章&#xff0c;来自北京数科网维技术有限责任公司&#xff0c;作者&#xff1a;张严。 PART1 政务服务电子文件归档和电子档案管理背景 政务服务是政务服务机构…

3大法则教你高效制定奖励规则(含参考案例)

在实施全民分销的过程中&#xff0c;SaaS产品方和合作伙伴推广者之间的合作关系可以用河马与牛椋鸟之间的共生关系来形容——牛椋鸟以栖息在河马背上并清理其身上的昆虫为生。这种关系对两者来说都是极其有益的&#xff1a;牛椋鸟获得了稳定的食物来源&#xff0c;而河马则有效…

在线预览多类型文件_全栈

目录 一、下载运行项目 二、项目功能 三、前端项目引用 四、文件预览样式更改 在做项目时经常用到在线预览文件&#xff0c;给大家介绍一个好用的在线预览文件项目。使用技术是后端Java&#xff0c;前端Freemarker模板。 FreeMarker 特别适应与 MVC 模式的 Web 应用&#x…

全篇创新点!图像融合9大魔改创新方案,暴力涨点

在处理复杂图像数据和提升图像质量时&#xff0c;采用图像融合的技术是个更好的选择。 这是因为&#xff1a;图像融合能够整合来自不同图像源的信息&#xff0c;为我们提供比单一图像更丰富、更全面、更高质量的图像数据。这种技术不仅减少了数据冗余&#xff0c;还增强了图像…

Excel批量删除括号里内容,帮你轻松应对!

某次&#xff0c;刘小生从系统导出的人员信息中&#xff0c;“姓名”字段信息中包含了工号信息&#xff0c;需要将“原姓名”中的“工号、括号”信息删除&#xff0c;如果一个一个删除工作量很大&#xff0c;刘小生想到可以用“通配符*”批量替换&#xff0c;解放双手&#xff…

Java小结

# Java的特点 Java是一门面向对象的编程语言。面向对象和面向过程的区别参考下一个问题。 Java具有平台独立性和移植性。 Java有一句口号&#xff1a;Write once, run anywhere&#xff0c;一次编写、到处运行。这也是Java的魅力所在。而实现这种特性的正是Java虚拟机JVM。已…

【IPython使用技巧整理】内省功能历史命令执行Shell命令运行脚本导出为其他格式

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…