本地缓存实现Caffeine

@Configuration
public class CaffeineCacheConfig {

    @Bean
    public Cache<Long, Item> itemCache() {
        return Caffeine.newBuilder().
                initialCapacity(100)
                .maximumSize(10_100).
                build();
    }

    @Bean
    public Cache<Long, ItemStock> stockCache() {
        return Caffeine.newBuilder().
                initialCapacity(100)
                .maximumSize(10_100).
                build();
    }
}

如果本地缓存获取到直接返回,没有获取到查询数据库放入本地缓存然后返回

 @GetMapping("/{id}")
    public Item findById(@PathVariable("id") Long id){
        return itemCache.get(id,key->{
            return itemService.query()
                    .ne("status", 3).eq("id", key)
                    .one();
        });

    }

    @GetMapping("/stock/{id}")
    public ItemStock findStockById(@PathVariable("id") Long id){
        return stockCache.get(id,key->{
            return stockService.getById(key);
        });

    }

你可能感兴趣的:(缓存,java,开发语言)