モール: Redis プロジェクトのソースコード分析

1.モールオープンソースプロジェクト

1.1 出典

モール学習チュートリアル、アーキテクチャ、ビジネス、技術的なポイントの包括的な分析。モール プロジェクト ( 50k+star ) は、現在の主流のテクノロジーを使用して実装された電子商取引システムです。Docker コンテナーのデプロイメントを使用した、SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、Mysql5.7 およびその他のテクノロジーをカバーします。

プロジェクトの github アドレス: github.com

1.2 プロジェクトの移管

Github 上のプロジェクトを gitee に転送して、アイデアのクローンを簡単に作成できます。

具体的な手順は次のとおりです。

ここに画像の説明を挿入します

1.3 プロジェクトのクローン作成

github は海外に展開されているため、idea は github からのプルにも対応していますが、クローン作成速度が遅すぎるため、前述のように gitee をインポートした後、プロジェクトを idea にクローンすることをお勧めします。

具体的なクローン作成手順は単純すぎて日常的なものなので、読者は自分で作成することも、Baidu で検索することもできます。

2. Redis 非リレーショナル データベース

2.1 Redis の概要

Redis は、ANSI C 言語で書かれたオープンソースのログタイプの Key-Value データベースで、BSD プロトコルに準拠し、ネットワークをサポートし、メモリベースで永続化でき、複数の言語で API を提供する高性能なキーです。 -value データベース。データベース。

値には文字列、マップ、リスト、セット、ソートされたセットなどのタイプがあるため、データ構造サーバーと呼ばれることがよくあります。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis开发文档地址: Redis 简介_redis教程

安装Redis操作简单,读者自行百度或查看开发文档安装即可。

2.2 分布式后端项目的使用流程

下图是结合项目经历,外加百度查找资料,自行总结的基本使用流程。

Redis的使用流程图如下:

ここに画像の説明を挿入します

2.3 分布式后端项目的使用场景

下图是结合项目经历,外加百度查找资料,自行总结的基本使用场景。

Redis的使用场景图如下:

ここに画像の説明を挿入します

2.4 常见的缓存问题

下图是结合项目经历,外加百度查找资料,自行总结的常见缓存问题。

Redis的缓存问题图如下:

ここに画像の説明を挿入します

三、源码解析

看源码自我总结出来的看新项目时的基本步骤,首先先看集成和配置,在从业务的角度来分析,结合集成的框架和组件,来依次剥削系统的架构。

**解析内容:**下方的解析内容大部分在图中解释,外面就不做过多的阐述。

3.1 集成与配置

直接拿源码分析,只分析与Redis有关的部分,其它部分读者请,自行看源码分析。

**项目启动:**只需要启动mall-tiny-redis模块的部分即可。

**启动所需:**启动mysql5,Redis的服务,创建数据库,并导入表(sql文件位置在,项目同级目录的document文件夹里)。

**ps:**记得修改数据库连接的配置信息和Redis的连接信息。

3.1.1 导入依赖

pom文件中导入Redis的相关依赖。

ここに画像の説明を挿入します

3.1.2 添加配置

application.yml中添加Redis的相关配置。
ここに画像の説明を挿入します

3.1.3 全局跨域配置

ここに画像の説明を挿入します

3.2 Redis テスト

3.2.1 Redis 構成クラス

Redis 構成クラスは、RedisTemplate オブジェクトの作成、Redis シリアライザーの構成、Redis キャッシュの有効期間の設定など、Redis の構成と初期化を実装します。これらの構成により、アプリケーションはキャッシュ操作に Redis を簡単に使用できます。

1、Redis的配置和初始化工作

ここに画像の説明を挿入します

2、Redis序列化器

ここに画像の説明を挿入します

3、管理Redis缓存的读写操作和生命周期

ここに画像の説明を挿入します

3.2.2 起動時の Swagger バージョンの問題

1、出现问题

Springboot が swagger を統合すると、「No Mapping for GET /swagger-ui.html」というエラーが発生します。

ここに画像の説明を挿入します

2、解决办法

構成クラスで WebMvcConfigurationSupport クラスを継承し、addResourceHandlers メソッドをオーバーライドします。

ステップ 1 : 継承

ここに画像の説明を挿入します

ステップ 2 : 書き換える

ここに画像の説明を挿入します

コードは以下のように表示されます。

  @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
    
        registry.addResourceHandler("doc.html")
                .addResourceLocations("classpath:/META-INF/resources/");

        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

3、成功效果

ここに画像の説明を挿入します

3.2.3 Redis キャッシュのテスト

上記のエピソードの後、本題に入りましょう。

1、测试简单缓存

存:redisTemplate.opsForValue().set(key, value)

取:redisTemplate.opsForValue().get(key)

ここに画像の説明を挿入します

2、测试Hash结构的缓存

存:redisTemplate.opsForHash().putAll(key,map)

取:redisTemplate.opsForHash().entries(key)

ここに画像の説明を挿入します

3. 测试Set结构的缓存(故障中)

存:redisTemplate.opsForSet().add(キー, 値)

删:redisTemplate.opsForSet().remove(key,values)

取:redisTemplate.opsForSet().members(key)

ここに画像の説明を挿入します

4. 测试List结构的缓存(秩序ある)

バッチストレージ: redisTemplate.opsForList().rightPushAll(key, value)

删:redisTemplate.opsForList().remove(key, count, value)

取:redisTemplate.opsForList().range(key, start, end)

ここに画像の説明を挿入します

5、Redis中的存储效果

先ほど閲覧した読者の皆さんは、Redisの操作について疑問を持たれたのではないでしょうか?ストレージ効果を確認してみませんか? 遅ればせながらのレンダリングといくつかの紹介は次のとおりです。

ここに画像の説明を挿入します

3.2.4 ブランドインターフェイスのキャッシュをテストする

ブランドインターフェースでのRedisキャッシュの利用については、ブランド詳細のクエリ、削除、更新のみRedisキャッシュを利用し、アノテーションの形で記述されていますが、ここではブランド詳細のクエリとブランド情報の更新の2つの例を挙げます。

1、获取指定id的品牌详情

注解:@Cacheable(value = RedisConfig.REDIS_KEY_DATABASE, key = “'pms:brand:'+#id”, until = “#result==null”)

Swagger でのテストのレンダリング:

ここに画像の説明を挿入します

ビジネスロジックコード:

ここに画像の説明を挿入します

Redis レンダリング:

ここに画像の説明を挿入します

2、更新指定id品牌信息

注解:@CacheEvict(value = RedisConfig.REDIS_KEY_DATABASE, key = “'pms:brand:'+#id”)

Swagger でのテストのレンダリング:

ここに画像の説明を挿入します

ビジネスロジックコード:

ここに画像の説明を挿入します

Redis レンダリング:

ここに画像の説明を挿入します

4. まとめ

この記事では、Redis キャッシュを学ぶために実際のプロジェクトから要件を取得し、学習するソース コードと組み合わせて、mallオープンソース プロジェクトから Redis を学びました。この記事はあなたに役立ちます。

将来的には、このフレームワークを組み合わせて他のテクノロジー スタックも学習する予定です。

盈若安好,便是晴天

おすすめ

転載: blog.csdn.net/qq_51601665/article/details/132514142