JetCache 快速实战

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。 JetCache提供了比SpringCache更加强大的注解,可以原生的支持TTL、两级缓存、分布式自动刷新,还提供了Cache接口用于手工缓存操作。 当前有四个实现,RedisCache、TairCache(此部分未在github开源)、CaffeineCache(in memory)和一个简易的LinkedHashMapCache(in memory),要添加新的实现也是非常简单的。

JetCache 是什么?


JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。 JetCache提供了比SpringCache更加强大的注解,可以原生的支持TTL、两级缓存、分布式自动刷新,还提供了Cache接口用于手工缓存操作。 当前有四个实现,RedisCacheTairCache(此部分未在github开源)、CaffeineCache(in memory)和一个简易的LinkedHashMapCache(in memory),要添加新的实现也是非常简单的。


全部特性:


  • 通过统一的API访问Cache系统


  • 通过注解实现声明式的方法缓存,支持TTL和两级缓存


  • 通过注解创建并配置Cache实例


  • 针对所有Cache实例和方法缓存的自动统计


  • Key的生成策略和Value的序列化策略是可以配置的


  • 分布式缓存自动刷新,分布式锁 (2.2+)


  • 异步Cache API (2.2+,使用Redis的lettuce客户端时)


  • Spring Boot支持


如何使用


  1. 添加依赖


// redis
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
    implementation 'org.apache.commons:commons-pool2'
    // jetcache
    implementation 'com.alicp.jetcache:jetcache-starter-redis:2.6.2'


  1. 配置 yml


jetcache:
  statIntervalMinutes: 15
  areaInCacheName: false
  local:
    default:
      type: linkedhashmap
      keyConvertor: fastjson
  remote:
    default:
      type: redis
      keyConvertor: fastjson
      valueEncoder: java
      valueDecoder: java
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      host: 127.0.0.1
      port: 6379


  1. 然后创建一个App类放在业务包的根下,EnableMethodCache,EnableCreateCacheAnnotation这两个注解分别激活Cached和CreateCache注解,其他和标准的Spring Boot程序是一样的。这个类可以直接main方法运行。


package io.zhengsh.order;
import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation;
import com.alicp.jetcache.anno.config.EnableMethodCache;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("io.zhengsh.order.mapper")
@SpringBootApplication
@EnableMethodCache(basePackages = "io.zhengsh.order.service")
@EnableCreateCacheAnnotation
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class);
    }
}


  1. 业务类上增加注解使用,业务类代码如下:


public interface OrderService {
    OrderVo get(Long id);
    OrderVo createOrder(OrderDto orderDto);
}
// 实现类
@Service
public class OrderServiceImpl implements OrderService {
    private Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class);
    @Override
    public OrderVo get(Long id) {
        logger.info("OrderService#get invoke!");
        Order orderVo =  new OrderVo();
        orderVo.setCode("100");
        return orderVo;
    }
    @Override
    public OrderVo createOrder(OrderDto orderDto) {
        logger.info("OrderService#createOrder invoke!");
        return null;
    }
}


  1. 测试代码


@SpringBootTest
class OrderServiceTest {
    private Logger logger = LoggerFactory.getLogger(OrderServiceTest.class);
    @Autowired
    private OrderService orderService;
    @Test
    void get() {
        OrderVo orderVo = orderService.get(100L);
        logger.info("orderVo#code : {} ", orderVo.getCode());
        OrderVo orderVo1 = orderService.get(100L);
        logger.info("orderVo#code : {} ", orderVo1.getCode());
    }
    @Test
    void createOrder() {
    }
}


输出如下:


// 输出
// OrderService#get invoke!
// orderVo#code : 100
// orderVo#code : 100


常见问题


常见问题我们可以参考官方的 issues:



相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
缓存 NoSQL Java
【JetCache】JetCache的使用方法与步骤
【JetCache】JetCache的使用方法与步骤
3354 0
|
缓存 Java Redis
JetCache快速入门
本文简要介绍了基于注解来配置使用JetCache的方式。当使用JetCache的注解时,可以搭配Spring4.0.8以上版本,或者Spring Boot 1.1.9以上版本,本文同时展示了这两种情况下的配置方式。
18588 0
|
3月前
|
缓存 NoSQL Java
SpringBoot的三种缓存技术(Spring Cache、Layering Cache 框架、Alibaba JetCache 框架)
Spring Cache 是 Spring 提供的简易缓存方案,支持本地与 Redis 缓存。通过添加 `spring-boot-starter-data-redis` 和 `spring-boot-starter-cache` 依赖,并使用 `@EnableCaching` 开启缓存功能。JetCache 由阿里开源,功能更丰富,支持多级缓存和异步 API,通过引入 `jetcache-starter-redis` 依赖并配置 YAML 文件启用。Layering Cache 则提供分层缓存机制,需引入 `layering-cache-starter` 依赖并使用特定注解实现缓存逻辑。
1022 1
SpringBoot的三种缓存技术(Spring Cache、Layering Cache 框架、Alibaba JetCache 框架)
|
缓存 Java Spring
缓存 - Spring Boot 整合 Caffeine 不完全指北
缓存 - Spring Boot 整合 Caffeine 不完全指北
408 0
|
存储 canal 缓存
SpringCache
SpringCache
|
XML NoSQL Java
【SimpleFunction系列二.2】SpringBoot注解整合Redisson分布式锁
Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。充分的利用了Redis键值数据库提供的一系列优势,基于Java实用工具包中常用接口,为使用者提供了一系列具有分布式特性的常用工具类。
388 0
【SimpleFunction系列二.2】SpringBoot注解整合Redisson分布式锁
|
缓存 Dubbo Java
SpringBoot如何一分钟集成Caffeine?
SpringBoot如何一分钟集成Caffeine?
703 0
|
监控 druid 算法
SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 实现分库分表
 今天项目不忙,想搞一下shardingJDBC分库分表看看,主要想实现以下几点: 舍弃xml配置,使用.yml或者.properties文件+java的方式配置spring。 使用 Druid 作为数据库连接池,同时开启监控界面,并支持监控多数据源。 不依赖 com.dangdang 的 sharding-jdbc-core 包。此包过于古老,最后一次更新在2016年。目测只是封装了一层,意义不大。感觉如果不是dangdang公司内部开发,没必要用这个包。(且本人实测不能和最新的Druid包一起用,insert语句报错)
SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 实现分库分表
|
存储 缓存 NoSQL
Spring Boot 2.x 把 Guava 干掉了,选择本地缓存之王 Caffeine!
Spring Boot 2.x 把 Guava 干掉了,选择本地缓存之王 Caffeine!
730 0
Spring Boot 2.x 把 Guava 干掉了,选择本地缓存之王 Caffeine!
|
缓存 监控 NoSQL
jetcache教程
jetcache教程
1235 0
jetcache教程