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

全部特性:
Cache系统Cache实例Cache实例和方法缓存的自动统计// 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'
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
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);
}
}
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;
}
}
@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