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 の色に関する参考資料

推薦する

MySQL 8.0 でのチェック制約の実装

みなさんこんにちは。私は技術の話ばかりして髪を切らない先生のトニーです。今回はMySQL 8.0で追...

Vue はボタンをクリックしてファイルをダウンロードする操作コードを実装します (バックエンド Java)

前回の記事では、ボタンをクリックしてファイルをダウンロードするVueの機能を紹介しました。今日は、ボ...

DockerコンテナでLNMPをコンパイルする例

目次1. プロジェクトの説明2. Nginxイメージの作成3. MySQLイメージの作成4. PHP...

nginx+php-fpm サービスの HTTP ステータス コード 502 の詳細な分析

弊社の Web プロジェクトの 1 つでは、新しい都市の増加によりトラフィックと DB 負荷が増加し...

ico ミラー コードを HTML に追加します (favicon.ico はルート ディレクトリに配置されます)

コード:コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC &...

JavaScript の querySelector メソッドと getElementById メソッドの違いを分析する

目次1. 概要1.1 querySelector() と querySelectorAll() の使...

vue data が関数である理由をご存知ですか?

公式サイトの説明: コンポーネントを定義する場合、コンポーネントは複数のインスタンスを作成するために...

Navicat Premiumを使用してMySQLデータベースにリモート接続する方法

新しい接続を作成する側がクライアントに相当し、接続される側がサーバーに相当します。手順は次のとおりで...

Windows に MySQL をインストールする方法のグラフィック チュートリアル

概要: この記事では主に、Windows 環境に MySQL をインストールする方法について説明しま...

Linux 上の LAN 内のすべてのホスト名 (コンピュータ名) をすばやく一覧表示するスクリプト

最近、LAN 内のすべてのホスト名を一覧表示する必要があります (SMB プロトコル)。しかし、fi...

docker runとstartの違い

docker における実行と開始の違いDocker run はミラーイメージを指定します。そしてdo...

Vue3とVue2の利点のまとめ

目次1. なぜ vue3 が必要なのでしょうか? 2. vue3の利点3. 応答原則の違い4. ライ...

Linux yum コマンドを使用して mysql8.0 をインストールする方法の詳細なチュートリアル

1. 設置前によく掃除する rpm -pa | grep mysql または rpm -qa | g...