[完结13章,附电子书]高性能多级网关与多级缓存架构落地实战

赵颜
• 阅读 117

资料地址1:https://pan.baidu.com/s/1bSdBzBeMXX3MTX29TJlM8Q 提取码:taht 资料地址2:https://share.weiyun.com/SNltUNLW 密码:zi3dc7

今天给大家讲讲关于多级网关与多级缓存架构的相关知识,在文章里面,我将从0到1带着大家构建基础服务接口,通过层层递进优化服务,使得服务具备多级缓存的特性,并融合OpenResty拓展一个强大的多级网关+多级缓存的技术架构。

以下就是代码实战展示: 引入springboot3的maven依赖,本质上作为pom引入,直接管理他的版本号,后续用到啥组件直接拿来即用: org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-configuration-processor org.springframework.boot spring-boot-starter-aop org.springframework.boot spring-boot-starter-jdbc dependencyManagement 依赖管理 全代码依赖配置如下:

    <!-- mysql 驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>
    <!-- 持久层 mybatis -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.4.1</version>
    </dependency>

    <!-- jackson -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.14.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.14.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.14.2</version>
    </dependency>

    <!-- apache 工具类 -->
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.15</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.12.0</version>
    </dependency>
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.11.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.13</version>
    </dependency>

    <!-- google 工具类 -->
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>28.2-jre</version>
    </dependency>

</dependencies>
使用 zadd zset 10 value1 20 value2 30 value3:设置member和对应的分数 zrange zset 0 -1:查看所有zset中的内容 zrange zset 0 -1 withscores:带有分数 zrank zset value:获得对应的下标 zscore zset value:获得对应的分数 zcard zset:统计个数 zcount zset 分数1 分数2:统计个数 zrangebyscore zset 分数1 分数2:查询分数之间的member(包含分数1 分数2) zrangebyscore zset (分数1 (分数2:查询分数之间的member(不包含分数1 和 分数2) zrangebyscore zset 分数1 分数2 limit start end:查询分数之间的member(包含分数1 分数2),获得的结果集再次根据下标区间做查询 zrem zset value:删除member 在common中引入的坐标依赖 org.apache.commons commons-lang3 com.fasterxml.jackson.core jackson-core com.fasterxml.jackson.core jackson-annotations com.fasterxml.jackson.core jackson-databind com.fasterxml.jackson.datatype jackson-datatype-jsr310 迭代查询代码,一级缓存与二级缓存结合: @GetMapping("query") public Object query(String id) {
String articleKey = "article:" + id;
String articleKeyRedis = "REDIS_ARTICLE:" + id;

Article article = cache.get(articleKey, s -> {
    System.out.println("文章id为"+id+"的没有查询到,则从Redis中查询后返回...");

    Article articleReal = null;
    String articleJsonStr = redis.get(articleKeyRedis);
    // 判断从redis中查询到的文章数据是否为空
    if (StringUtils.isBlank(articleJsonStr)) {
        System.out.println("Redis中不存在该文章,将从数据库中查询...");

        // 如果为空,则进入本条件,则从数据库中查询数据
        articleReal = articleService.queryArticleDetail(id);
        // 手动把文章数据设置到redis中,后续再次查询则有值
        String articleJson = JsonUtils.objectToJson(articleReal);
        redis.set(articleKeyRedis, articleJson);
    } else {
        System.out.println("Redis中存在该文章,将直接返回...");

        // 如果不为空,则直接转换json类型article再返回即可
        articleReal = JsonUtils.jsonToPojo(articleJsonStr, Article.class);
    }
    return articleReal;
});

return article;

} 本文到此结束,感谢大家的阅读!

点赞
收藏
评论区
推荐文章
helloworld_40038029 helloworld_40038029
6个月前
高性能多级网关与多级缓存架构落地实战
缓存架构是指将数据缓存在内存或其他快速存储介质中,以进步系统性能和响应速度的一种技术。缓存架构通常用于数据库、应用程序和网络效劳器等需求大量数据访问的场景中。下面是一个关于缓存架构的示例文章,细致引见了缓存架构的原理、完成方式以及优缺陷。
荀勗 荀勗
2个月前
首个基于Transformer的分割检测+视觉大模型视频课程(附源码+课件)
参考资料地址1:https://pan.baidu.com/s/14g2VTg8JeeZ0pDey7xwGg提取码:2bmp参考资料地址2:https://share.weiyun.com/tnVNHGMD密码:3fj7iy众所周知,视觉系统对于理解和推理
荀勗 荀勗
2个月前
高性能多级网关与多级缓存架构落地实战(完结+附电子书)
参考资料地址1:https://pan.baidu.com/s/12w0TT26aywnoIcogPg8Uw提取码:uzf4参考资料地址2:https://share.weiyun.com/SNltUNLW密码:zi3dc7什么是网关?网关(Gateway
吉太 吉太
2个月前
高性能多级网关与多级缓存架构落地实战(完结+附电子书)
学习地址1:https://pan.baidu.com/s/14sTSypnp6u4RSYLLkGJiLg提取码:jn7s学习地址2:https://share.weiyun.com/SNltUNLW密码:zi3dc7我们今天讲的实际上是一个工作在HTTP
笑面虎 笑面虎
2个月前
【完结13章】高性能多级网关与多级缓存架构落地实战
【完结13章】高性能多级网关与多级缓存架构落地实战给大家分享一套网关课程——高性能多级网关与多级缓存架构落地实战,已完结13章,附源码电子书。多级网关与多级缓存架构是一种常用的系统架构设计模式,用于提高系统性能和可扩展性。下面详细介绍一下这两种架构。多级
赵颜 赵颜
2个月前
[16章]SpringBoot2 仿B站高性能前端+后端项目(2023新版)
资料地址1:https://pan.baidu.com/s/1cxQDKIi7iu1mGmjRr9a0Mw提取码:tz5s资料地址2:https://pan.baidu.com/s/1DjmuC6Id4oUCNVbxfgcMg提取码:qtf3今天给大家讲讲
荀勗 荀勗
2个月前
[新版16章+电子书]SpringBoot+Vue3 项目实战,打造企业级在线办公系统
参考资料地址1:https://pan.baidu.com/s/1KmJP0OPD5P6iHlT7G1MIw提取码:4wyi参考资料地址2:https://share.weiyun.com/jVSDdcBU密码:cruqf9一个完整的在线办公系统具备哪些功
吉太 吉太
2个月前
[2023新版16章]SpringBoot+Vue3 项目实战,打造企业级在线办公系统
参考资料地址1:https://pan.baidu.com/s/1ZJGS0SA9pIUr76VUXioNSg提取码:95bd参考资料地址2:https://share.weiyun.com/jVSDdcBU密码:cruqf9SpringBootVue3
赵嬷嬷 赵嬷嬷
1个月前
OpenGL-自主高性能三维GIS平台架构与实现(第2季)
网盘地址:https://pan.baidu.com/s/1Z2FTiwJ6nXxvgvMayuXNKw提取码:12so腾讯微云下载地址:https://share.weiyun.com/I2HekLPO密码:b36r5s今天给大家讲讲关于OpenGL的知
赵嬷嬷 赵嬷嬷
1个月前
[完结10章]Vue3+Pinia+Vite+TS 还原高性能外卖APP项目
参考资料地址1:https://pan.baidu.com/s/1u0uNBMkOA2NRk3N6myb4Zg提取码:tnlt参考资料地址2:https://share.weiyun.com/Wjw3QpeQ密码:gxrfcwVue3带来的改变,除了其自身