多级缓存架构(二)Caffeine进程缓存

这篇具有很好参考价值的文章主要介绍了多级缓存架构(二)Caffeine进程缓存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通过本文章,可以完成多级缓存架构中的进程缓存。
多级缓存架构(二)Caffeine进程缓存,Server运维,# 多级缓存架构,缓存,架构,docker,mysql
多级缓存架构(二)Caffeine进程缓存,Server运维,# 多级缓存架构,缓存,架构,docker,mysql

一、引入依赖

item-service中引入caffeine依赖

		<dependency>
            <groupId>com.github.ben-manes.caffeine</groupId>
            <artifactId>caffeine</artifactId>
        </dependency>

二、实现进程缓存

这是Caffeine官方文档地址

1. 配置Config类

创建config.CaffeineConfig

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

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

2. 修改controller

ItemController中注入两个Cache对象,并修改业务逻辑

@RestController
@RequestMapping("item")
public class ItemController {

    @Autowired
    private IItemService itemService;
    @Autowired
    private IItemStockService stockService;
    @Autowired
    private Cache<Long, Item> itemCache;
    @Autowired
    private Cache<Long, ItemStock> stockCache;

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

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

三、运行

Idea结合Docker将springboot放入docker容器中运行,并指定使用multi-cache_multi-cache网络,以及固定172.30.3.4地址。
详细参考如下文章

  • Idea连接Docker在本地(Windows)开发SpringBoot
    多级缓存架构(二)Caffeine进程缓存,Server运维,# 多级缓存架构,缓存,架构,docker,mysql

启动好后,可以看到springboot容器和mysql容器处于同一网络下。(Docker Desktop for Windows插件PortNavigator)
多级缓存架构(二)Caffeine进程缓存,Server运维,# 多级缓存架构,缓存,架构,docker,mysql

四、测试

访问http://localhost:8081/item/10001可以看到springboot日志输出如下

02:45:58:841 DEBUG 1 --- [nio-8081-exec-1] c.h.item.mapper.ItemMapper.selectOne     : ==>  Preparing: SELECT id,name,title,price,image,category,brand,spec,status,create_time,update_time FROM tb_item WHERE (status <> ? AND id = ?)
02:45:58:889 DEBUG 1 --- [nio-8081-exec-1] c.h.item.mapper.ItemMapper.selectOne     : ==> Parameters: 3(Integer), 10001(Long)
02:45:58:951 DEBUG 1 --- [nio-8081-exec-1] c.h.item.mapper.ItemMapper.selectOne     : <==      Total: 1

当我们二次访问此网址,强制刷新+禁用浏览器缓存+更换浏览器,springboot日志都没有新的查询记录,说明使用了Caffeine缓存。文章来源地址https://www.toymoban.com/news/detail-785261.html

到了这里,关于多级缓存架构(二)Caffeine进程缓存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多级缓存架构(五)缓存同步

    通过本文章,可以完成多级缓存架构中的缓存同步。 1. mysql添加canal用户 连接在上一次 multiCache 项目中运行的 mysql 容器,创建 canal 用户。 2. mysql配置文件 在 docker/mysql/conf/my.cnf 添加如下配置 3. canal配置文件 添加 canal 服务块到 docker-compose.yml ,如下 任意启动一个 canal-server 容

    2024年01月16日
    浏览(57)
  • 多级缓存架构(四)Redis缓存

    通过本文章,可以完成多级缓存架构中的Redis缓存。 在 docker/docker-compose.ym l中,添加redis服务块 在 spirngboot 项目启动时,将固定的热点数据提前加载到 redis 中。 1. 引入依赖 pom.xml 添加如下依赖 application.yml 添加如下配置 2. handler类实现 新建 config.RedisHandler 类,内容如下,主要

    2024年01月22日
    浏览(40)
  • .NET CORE开源 DDD微服务 支持 多租户 单点登录 多级缓存、自动任务、分布式、日志、授权和鉴权 、网关 、注册与发现 系统架构 docker部署

    源代码地址https://github.com/junkai-li/NetCoreKevin 基于NET6搭建跨平台DDD思想WebApi架构、IDS4单点登录、多缓存、自动任务、分布式、多租户、日志、授权和鉴权、CAP、SignalR、 docker部署  如需简约项目可直接去除项目引用 解耦设计都可以单独引用 架构默认全部引用并启动 项目启动时

    2023年04月24日
    浏览(48)
  • 多级缓存架构(三)OpenResty Lua缓存

    通过本文章,可以完成多级缓存架构中的Lua缓存。 在 docker/docker-compose.yml 中添加nginx服务块。 删除原来docker里的 multiCache 项目并停止 springboot 应用。 nginx 部分配置如下,监听端口为 8080 ,并且将请求反向代理至 172.30.3.11 ,下一小节,将 openresty 固定在 172.30.3.11 。 重新启动

    2024年01月16日
    浏览(55)
  • 多级缓存 架构设计

    在40岁老架构师 尼恩的 读者社区 (50+)中,很多小伙伴拿到一线互联网企业如阿里、网易、有赞、希音、百度、网易、滴滴的面试资格,多次遇到一个很重要的面试题: 20w的QPS的场景下,服务端架构应如何设计? 10w的QPS的场景下,缓存架构应如何设计? 尼恩提示, 缓存架构

    2024年02月10日
    浏览(38)
  • 服务端应用多级缓存架构方案

    20w的QPS的场景下,服务端架构应如何设计? 可使用分布式缓存来抗,比如redis集群,6主6从,主提供读写,从作为备,不提供读写服务。1台平均抗3w并发,还可以抗住,如果QPS达到100w,通过增加redis集群中的机器数量,可以扩展缓存的容量和并发读写能力。同时,缓存数据对于

    2024年02月16日
    浏览(40)
  • 多级缓存架构(一)项目初始化

    克隆此项目到本地 https://github.com/Xiamu-ssr/MultiCache 来到 start 目录下,分别有以下文件夹 docker :docker相关文件 item-service :springboot项目 在 docker/docker-compose.yml 中已经定义好如下 mysql 块 my.cnf 如下 运行以下命令启动 docker-compose 之后使用数据库连接工具连接 mysql 容器,创建 he

    2024年02月02日
    浏览(64)
  • 【技术解决方案】(多级)缓存架构最佳实践

    凌晨三点半了,太困了,还差一些,明天补上… 因为自己最近做的项目涉及到了缓存,所以水一篇缓存相关的文章,供大家作为参考,若发现文章有纰漏,希望大家多指正。 缓存涉及到的范围颇广,从CPU缓存,到进程内缓存,到进程外缓存。再加上已经凌晨一点了,我得保

    2024年02月07日
    浏览(48)
  • 【案例实战】高并发业务的多级缓存架构一致性解决方案

    我们在高并发的项目中基本上都离不开缓存,那么既然引入缓存,那就会有一个缓存与数据库数据一致性的问题。 首先,我们先来看看高并发项目里面Redis常见的三种缓存读写模式。 Cache Aside 优点 读取效率高,缓存命中率高,写操作与数据库同步,数据一致性较高,实现较

    2024年02月13日
    浏览(45)
  • 使用Spring管理Caffeine缓存(CacheManager+Caffeine)

    使用Spring管理Caffeine缓存的主要pom依赖如下所示。 CacheManager配置类如下所示。 使用Caffeine在本地缓存查询结果,使用案例如下所示。 (1)关于maximumSize 当首次设置缓存并尝试存入的数据量大于设置的maximumSize时,Caffeine不会直接报错。但是,当尝试将新数据添加到已满的缓存

    2024年01月19日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包