Docker での Redis の永続ストレージの詳細な説明

Docker での Redis の永続ストレージの詳細な説明

この章では、dockerの下にあるSpring BootプロジェクトでRedisを操作し始めます。

準備:

(1)フォルダを作成する:usr/local/work/share

(2)jarパッケージ化されたプロジェクトをプルする

(3)解凍したjarパッケージを先ほど作成したフォルダに入れ、docker-compose.ymlというファイルを作成する。

(4)tmpディレクトリにデータフォルダを作成する

(5)docker-compose.ymlファイルに次の内容を記述します。

レディス:
 画像: redis:3
 ポート:
 - 「6379:6379」
 ボリューム:
 - /tmp/データ:/データ
 - ジャワ:
 画像: bolingcavalry/springbootrun:0.0.1
 リンク:
 - redis:redisホスト
 ボリューム:
  - /usr/local/work/share:/usr/Downloads
 ポート:
 - 「8080:8080」
 端末: 真

ここではボリュームについてのみ説明します。簡単に言うと、docker の redis コンテナに保存されたデータがローカル ディレクトリに永続化されます。

公式声明:

Redis ポート 6379 は Redis によって事前構成されており、コンテナからホストに公開されています。docker-compose.yml ファイルでは、ホストから外部に公開されているため、どのノードでも Redis デスクトップ マネージャーにアクセスしてこの Redis インスタンスを管理できます。 それに加えて、Redis 仕様には、このスタックのデプロイメント間でデータが永続化されるようにするいくつかの要素があります。Redis は常にマネージャー上で実行されるため、常に同じファイルシステムが使用されます。Redis はコンテナ内の /data としてホストのファイルシステム内の任意のディレクトリにアクセスし、ここに Redis がデータを保存します。

要約すると、これは、Redis データのホストの物理ファイル システムに「真実のソース」を作成することです。これがないと、Redis はコンテナのファイルシステム上の /data にデータを保存し、コンテナが再デプロイされるとデータがクリアされます。 この信頼できる情報源には、常に同じホストを使用することを保証する Redis サービスへの配置制約と、コンテナーが /data (Redis コンテナー内) として /data (ホスト上) にアクセスできるようにするために作成されるボリュームの 2 つのコンポーネントがあります。特定のホスト上の /data に保存されたファイルは、コンテナーが入れ替わっても保持されるため、継続性が維持されます。

2. コンテナを起動する

上記の内容を docker-compose.yml に書き込んだ後、ファイルがあるディレクトリで docker-compose up -d コマンドを実行して 2 つのコンテナを起動します。次に、docker ps を実行して次のようにコンテナ情報を確認します。

jar パッケージがダウンロードされると、ローカルの /usr/local/work/share ディレクトリに配置されます。このディレクトリはコンテナの /usr/Downloads にマップされるため、コンテナに入った後、このファイルに直接アクセスできます。

3. jarパッケージをデプロイする

実行中の springboot コンテナに入るには、次のコマンドを実行します。

docker exec -it share_java_1 /bin/bash

/usr/Downloads ディレクトリに入ると、次のファイルが表示されます。

redistempletedemo-0.0.1-SNAPSHOT.jar

コンテナを起動するには、次のコマンドを実行します。

java -jar redistempletedemo-0.0.1-SNAPSHOT.jar

起動は成功しました。情報は次のとおりです。

ローカルテスト

埋め込む

http://localhost:8080/set/name/hxy

埋め込む

http://localhost:8080/get/名前

redis コンテナに移動して確認し、次のコマンドを実行して redis コンテナに入ります。

docker exec -it share_redis_1 /bin/bash

redis-cli

コンソールで get name を実行すると、次に示すように、name に対応する値が表示されます。

簡単なテストは成功しました。前述の通り、redis コンテナが閉じられている限りすべてのデータは消えてしまいますが、上記の docker-compose.yml で設定しました。

ボリューム: - /tmp/data:/data

これは、保存したデータがローカルのtmp/dataディレクトリに保存されることを意味します。tmp/dataを開くと、dump.rdbというファイルが見つかります。

ターミナルで開き、コマンド vi dump.rdb を入力すると、保存したデータが表示されます。name:hxy

docker での redis の永続化については以上です。もっと良い方法があれば、ぜひアドバイスをお願いします。お読みいただきありがとうございました。

関連プロジェクト: https://github.com/haoxiaoyong1014/springboot-examples/tree/master/springboot-redis-docker

追加知識: Docker で Redis をインストールし、起動し、パスワードを設定し、永続性を有効にします。

画像をプルする

docker pull redis:5.0

起動してパスワードを設定し、永続性を有効にする

docker run -d --name redis-server -p 6379:6379 redis:5.0 --requirepass "mypassword" --appendonly yes

上記の docker での redis の永続ストレージの詳細な説明は、エディターが皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。

以下もご興味があるかもしれません:
  • Redis が高速な理由とは? 高可用性と永続性を実現する方法
  • Redis の 2 つの永続化ソリューションの詳細な説明
  • Linux での Redis の永続性、マスター スレーブ同期、Sentinel の詳細な説明
  • Redisメモリデータの永続性に関する簡単な説明
  • Redis の 2 つの永続化ソリューション、RDB と AOF の詳細な説明
  • Redis の永続性の詳細な説明

<<:  Reactコンポーネントをフルスクリーンにする方法

>>:  HTML の色に関する参考資料

推薦する

VUE+Express+MongoDBのフロントエンドとバックエンドの分離によるノートウォールの実現

付箋紙の壁シリーズを実現しようと思っています。シンプルなものはシンプル、複雑なものは多機能です。開発...

デザイン理論: なぜ私たちは間違った場所を見ているのでしょうか?

数日前、バスで仕事に行きました。バスのカードリーダーの実際の使用シーンを実際に見て、カードリーダーの...

mysqldumpデータエクスポートの問題に関する詳細な議論

1. mysqldump の使用時にエラー (1064) が報告されます。これは、mysqldump...

tdが空の場合に境界線を表示する方法

以前、CSS を使用してテーブルの border + bordercolordark + borde...

シンプルな時計を実装するJavaScript

この記事では、JavaScriptでシンプルな時計を実装するための具体的なコードを参考までに紹介しま...

MySQLのロック機構の詳細な説明

序文データの一貫性と整合性を確保するために、あらゆるデータベースにはロック メカニズムが備わっていま...

初心者向け入門チュートリアル⑨:ポータルサイトの構築方法

さらに、ブログ プログラムで構築された記事 Web サイトは常にブログのように見え、カスタマイズでき...

JSにおける4つのデータ型判定方法

目次1. 型2. インスタンス3. コンストラクター4.toString() この記事では、4 つの...

MySQLの文字セット設定を5分で理解しましょう

目次1. コンテンツの概要2. 文字セットと文字順序の概念と関係3. MySQL でサポートされてい...

ラベルとスパンの幅設定が無効である問題の解決

デフォルトでは、ラベルとスパンの幅の設定は無効です。一般的に、表示属性は必須ですコードをコピーコード...

MySQL ストレージエンジンの簡単な紹介

1. MySQL アーキテクチャストレージ エンジンを紹介する前に、まずは MySQL アーキテクチ...

Docker で Rancher をデプロイする方法 (落とし穴なし)

操作前に必ずお読みください:注意:管理に rancher を使用する場合は、k8s クラスターが構築...

js における浅いコピーと深いコピーの詳細な説明

目次1. jsメモリ2. 譲渡3. 浅いコピー4. ディープコピー序文:以下の記事を読む前に、記憶に...

Nginx URL 書き換えメカニズムの原理と使用例

URL 書き換えは、Web サイトの優先ドメインを決定するのに役立ちます。同じリソース ページの複数...

Bash スクリプトでの配列メソッドの作成と使用の概要

Bashで配列を定義するbash スクリプトで新しい配列を作成する方法は 2 つあります。 1 つ目...