SpringBoot配置第三方专业缓存技术jetcache方法缓存方案

简介: SpringBoot配置第三方专业缓存技术jetcache方法缓存方案

jetcache方法缓存

我们可以给每个方法配置缓存方案

JetCache 是一个基于 Java 的缓存库,支持多种缓存方案和缓存策略,主要用于提升应用程序的性能和响应速度。它提供了多种缓存模式和特性,可以根据需求选择合适的缓存方案。

JetCache 的主要特点和功能

  1. 支持多种缓存后端
  • JetCache 支持多种缓存后端,包括 Redis、Caffeine、LevelDB 等,可以根据项目的需要选择合适的后端存储。
  1. 多种缓存模式
  • Local Cache:本地缓存,使用 Caffeine 或者 ConcurrentHashMap 等,适用于单个应用节点内的快速访问。
  • Remote Cache:远程缓存,例如 Redis,适用于分布式环境下的数据共享和访问。
  1. 缓存注解支持
  • 提供了注解方式来标记需要缓存的方法或者数据,简化了缓存的配置和管理。
  1. 缓存策略
  • 支持多种缓存策略,例如基于 TTL(Time-To-Live)的过期策略、基于定时刷新的刷新策略、基于手动更新的策略等,可以根据业务需求选择合适的策略。
  1. 二级缓存支持
  • 支持二级缓存,例如先从本地快速缓存中获取数据,如果未命中再从远程缓存中获取,可以有效减少远程调用带来的延迟。
  1. 数据序列化和反序列化
  • 提供了对缓存数据的序列化和反序列化支持,可以灵活地处理不同类型的数据对象。
  1. 监控和统计
  • 提供了监控和统计功能,可以实时查看缓存的使用情况、命中率等指标,便于性能调优和监控。

使用 JetCache 的步骤

使用 JetCache 进行方法级别的缓存通常涉及以下几个步骤:

  1. 引入 JetCache 依赖: 在项目的 Maven 或者 Gradle 配置文件中引入 JetCache 的相关依赖。
  2. 配置缓存后端: 配置 JetCache 使用的缓存后端,例如 Redis、Caffeine 等。需要配置缓存的地址、端口、密码等参数。
  3. 定义缓存配置: 可以通过 Java 代码或者配置文件的方式定义缓存的配置信息,包括缓存的名称、过期时间、缓存模式等。
  4. 在方法上添加缓存注解: 使用 JetCache 提供的注解,如 @Cached@CacheInvalidate 等,来标记需要进行缓存操作的方法。可以指定缓存的 key、条件、过期时间等参数。
  5. 调整缓存策略: 根据具体的业务需求和性能要求,调整缓存的策略和参数,例如缓存的过期时间、刷新策略等。
  6. 启动应用程序: 启动应用程序,JetCache 将根据配置和注解来管理和处理缓存,提升应用的性能和响应速度。

我们是在业务层的实现类里操作的

我们首先要在启动响应类里打开开关

@EnableCreateCacheAnnotation
@EnableMethodCache(basePackages = "com.example.demo")

在业务层的实现类里去修改代码

@Override
@Cached(name="book",key="#id",expire = 3600)
public User getById(Integer id) {
    return userDao.selectById(id);
}

注意 预防空指针异常

注意 预防序列化反序列化

配置中同样要进行修改

意思是告诉框架 这是个java对象

启动成功

但是我们有一个问题

如果取缓存

缓存中的数据变化了

我们确没有更新

我们怎么去做

我们要在更新操作里去修改

我们每次调用更新操作或者是删除操作的时候

都会有个数值的更新操作

@Override
@CacheUpdate(name="book_",key="#book.id",value="#book")
public boolean update(User user) {
    return userDao.updateById(user)>0;
}

如果我们有两个系统

同时对一个表进行操作

一个删除 对方也不知道

这就叫我们内存中的数据和系统中的数据不同步

我们要进行一个刷新

设置每十秒进行一次刷新

@CacheRefresh(refresh = 10)
package com.example.demo.service.impl;
 
import com.alicp.jetcache.anno.CacheInvalidate;
import com.alicp.jetcache.anno.CacheRefresh;
import com.alicp.jetcache.anno.CacheUpdate;
import com.alicp.jetcache.anno.Cached;
import com.example.demo.dao.UserDao;
import com.example.demo.domain.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
 
import java.util.List;
 
@Service
public class UserServiceImpl implements UserService {
 
    @Autowired
    private UserDao userDao;
 
    @Override
    @Cached(name="book_",key="#id",expire = 3600)
    @CacheRefresh(refresh = 10)
    public User getById(Integer id) {
        return userDao.selectById(id);
    }
 
    @Override
    public boolean save(User user) {
        return userDao.insert(user)>0;
    }
    @Override
    @CacheUpdate(name="book_",key="#book.id",value="#book")
    @CacheRefresh(refresh = 10)
    public boolean update(User user) {
        return userDao.updateById(user)>0;
    }
 
    @Override
    @CacheInvalidate(name="book_",key="#book.id")
    @CacheRefresh(refresh = 10)
    public boolean delete(Integer id) {
        return userDao.deleteById(id)>0;
    }
 
    @Override
    public List<User> getAll() {
        return userDao.selectList(null);
    }
}

我们还可以加上一个配置

设置每隔一分钟会进行jetcache信息的打印

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

你看在控制台就能打印了

我们进行查询后

有了数据

小结

目录
相关文章
|
5月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
|
5月前
|
缓存 并行计算 监控
vLLM 性能优化实战:批处理、量化与缓存配置方案
本文深入解析vLLM高性能部署实践,揭秘如何通过continuous batching、PagedAttention与前缀缓存提升吞吐;详解批处理、量化、并发参数调优,助力实现高TPS与低延迟平衡,真正发挥vLLM生产级潜力。
1105 0
vLLM 性能优化实战:批处理、量化与缓存配置方案
|
6月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1081 5
|
7月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
1994 10
|
7月前
|
缓存 监控 Ubuntu
Ubuntu操作系统下清除系统缓存与无用文件的方法
通过上述步骤断行综合性地对Ubuntu进行优化与整洁可显著改善其性能表现及响应速度。然而,请注意在执行某些操作前确保充分了解其潜在影响;例如,在移除旧内核之前确认新内核稳定运行无问题;而对于关键配置更改则需确保备份好相关设置以便恢复原状态。
1603 0
|
7月前
|
缓存 NoSQL 数据库
Django缓存机制详解:从配置到实战应用
本文全面解析Django缓存技术,涵盖配置方法与六大缓存后端,结合实战场景演示四种典型应用方式,帮助开发者提升Web应用性能,应对高并发挑战。
229 0
|
7月前
|
缓存 运维 安全
WordPress安全加速:Cloudflare + Nginx缓存优化方案
本文介绍如何通过Cloudflare与Nginx优化WordPress网站性能,涵盖静态资源长期缓存、动态页面智能缓存及敏感路径保护,提升加载速度并保障后台安全。适用于使用Cloudflare与Nginx环境的WordPress站点。
345 0
|
8月前
|
缓存 NoSQL API
Django缓存机制详解:从配置到实战应用
本文介绍了 Django 缓存机制的基础知识与实战应用,涵盖缓存概念、Redis 安装配置、缓存策略及 API 使用,并通过 RBAC 权限系统演示缓存的读写与删除操作,助力提升 Web 应用性能。
215 0
|
9月前
|
缓存 负载均衡 网络协议
电商API接口性能优化技术揭秘:缓存策略与负载均衡详解
电商API接口性能优化是提升系统稳定性和用户体验的关键。本文聚焦缓存策略与负载均衡两大核心,详解其在电商业务中的实践。缓存策略涵盖本地、分布式及CDN缓存,通过全量或部分缓存设计和一致性维护,减少后端压力;负载均衡则利用反向代理、DNS轮询等技术,结合动态调整与冗余部署,提高吞吐量与可用性。文中引用大型及跨境电商平台案例,展示优化效果,强调持续监控与迭代的重要性,为电商企业提供了切实可行的性能优化路径。
|
10月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?