技術共有

NoSQL Redis の構成と最適化

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Redisデータベースの基本紹介と比較

Redis (RemoteDictionaryServer、リモート辞書タイプ) は、C 言語で書かれたオープンソースの NoSQL データベースです。 Redis はメモリに基づいて実行され、永続性をサポートします。キーと値 (キーと値のペア) ストレージ形式を採用しており、現在の分散アーキテクチャには不可欠な部分です。

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

NoSQL(NoSQL=Not Only SQL)とは、「SQLだけではない」という意味で、非リレーショナルデータベースの総称です。主流の NoSQL データベースには、Redis、MongBD、Hbase、CouhDB などが含まれます。上記の非リレーショナル データベースは、保存方法、保存構造、使用シナリオがまったく異なります。したがって、リレーショナル データベースのような一般的な用語ではなく、非リレーショナル データベースの集合であると考えられます。言い換えれば、主流のリレーショナル データベース以外のデータベースは非リレーショナルであると見なすことができます。 NOSQL データベースは、非リレーショナル、分散型、オープンソース、水平拡張という利点により、次世代のデータベース製品と考えられています。

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

リレーショナル データベースは、リレーショナル モデルに基づいた構造化データベースであり、一般にレコード指向です。集合代数などの数学的概念や手法を利用して、データベース内のデータを処理します。リレーショナル モデルは 2 次元のテーブル モデルを指すため、リレーショナル データベースは 2 次元のテーブルとそれらの間の関係で構成されるデータ組織です。現実世界では、さまざまなエンティティやエンティティ間のさまざまな関係をリレーショナル モデルで表現できます。 SQL ステートメント (Standard Data Query Language) は、リレーショナル データベースをベースにした言語であり、リレーショナル データベース内のデータを取得および操作するために使用されます。

3. 非リレーショナルデータベースの背景

Web2.0 Web サイトの台頭により、Web2.0 Web サイト、特に大量のデータと同時実行性の高い Web2.0 の純粋に動的 Web サイト (ソーシャル ネットワーキング サービス、つまりソーシャル ネットワーク サービス) を扱う場合、リレーショナル データベースが露呈することが多くなりました。三高問題など、解決が難しい問題。

(1) 高いパフォーマンス -- データベースに対する高い同時読み取りおよび書き込み要件

Web2.0 Web サイトは、ユーザーの個人情報に基づいて動的ページを生成し、動的情報をリアルタイムで提供するため、動的ページの静的テクノロジは使用できません。したがって、データベースの同時負荷は非常に高く、通常は 1 秒あたり 10,000 を超える読み取りおよび書き込みリクエストに達します。リレーショナル データベースはまだ数万件のクエリ リクエストをかろうじてサポートできますが、数万件のデータ書き込みリクエストがある場合、ハード ディスク I0 は耐えられなくなります。通常の BBS Web サイトでは、同時データ書き込みリクエストが頻繁に発生します。

(2) 大容量ストレージ -- 大量のデータを効率的に保存し、アクセスするための要件

Facebook や Friendfeed などの SNS Web サイトは、毎日大量のユーザーの動的な情報を生成します。たとえば、Friendfeed は 1 か月に 2 億 5,000 万件以上のユーザーの動的情報を生成します。リレーショナル データベースの場合、2 億 5,000 万のレコードを含むテーブルで SQL クエリを実行すると、クエリ効率が非常に低くなります。

(3) 高スケーラビリティ && 高可用性 -- データベースの高スケーラビリティと高可用性の要件

Web アーキテクチャでは、データベースを水平方向に拡張するのが最も困難です。アプリケーション システムへのユーザー数やアクセス数が日々増加すると、ハードウェアや Web サービスのようなサーバー ノードを追加するだけでは、データベースのパフォーマンスと負荷容量を単純に拡張できなくなります。特に 24 時間サービスを提供する必要がある一部の Web サイトでは、データベースのアップグレードや拡張にはダウンタイムのメンテナンスやデータの移行が伴うことが多く、その作業負荷は非常に膨大です。

リレーショナル データベースと非リレーショナル データベースには、それぞれ独自の特性とアプリケーション シナリオがあります。この 2 つを密接に組み合わせることで、Web2.0 データベースの開発に新しいアイデアがもたらされます。リレーショナル データベースは関係に重点を置き、非リレーショナル データベースはストレージに重点を置きます。たとえば、読み取りと書き込みが分離されている MySQL データベース環境では、頻繁にアクセスされるデータを非リレーショナル データベースに保存して、アクセス速度を向上させることができます。

4.Redisのメリット

データの読み取りおよび書き込み速度は最大 110,000 回/秒、データ書き込み速度は最大 81,000 回/秒に達します。

豊富なデータ型をサポートし、単純なキー値型データをサポートするだけでなく、文字列、リスト、ハッシュ、セット、順序付きセットなどのデータ型操作もサポートします。

データの永続化をサポートします。メモリ内のデータはディスクに保存でき、再起動時に再度ロードして使用できます。

アトミック。すべての Redis 操作はアトミックです。

データバックアップ、つまりマスター/スレーブモードでのデータバックアップをサポートします。

Redis はメモリベースのデータベースであり、キャッシュはその最も一般的なアプリケーション シナリオの 1 つです。さらに、Redis の一般的なアプリケーション シナリオには、最新の N データを取得する操作、ランキング アプリケーション、カウンター アプリケーション、ストレージ関係、リアルタイム分析システム、ロギングなども含まれます。

2. Redisのインストールと最適化

1: インストール

[root@localhost ~]# systemctl stop firewalld //実験環境ではファイアウォールをオフにしても効果はありません。運用環境ではファイアウォール ポリシーを追加することはお勧めできません。

[root@localhost ~]# setenforce 0 //カーネルをオフにします。これにより、アプリケーションの実行がブロックされます。

[root@localhost ~]# yum -y install gcc* zlib-devel //tar パッケージの解凍に必要なツールをダウンロードします

[root@localhost ~]#tar xvzf redis-4.0.9.tar.gz //redis はオープンソースの無料アプリケーションです。このパッケージは公式 Web サイトからダウンロードできます。

[root@localhost ~]#redis-4.0.9 をインストールします

[root@localhost redis-4.0.9]# 作成

知らせ:

作成時に以下のエラーメッセージが表示される場合があります。

解決策 1: 使用するMALLOC=l にするibc は libc のメモリ アロケータを指定しますコンパイル

解決策 2: クリーン && マを作成するke distclean

[root@localhost redis-4.0.9]# PREFIX=/usr/local/redis をインストールします

[root@localhost ~]# ln -s /usr/local/redis/bin/* /usr/local/bin/

[root@localhost redis-4.0.9]# cd /root/redis-4.0.9/utils/

[root@localhost utils]# ./install_server.sh

述べる:

設定ファイル: /etc/redis/6379.conf //設定ファイルのパス

ログ ファイル: /var/log/redis_6379.log //ログ ファイルのパス

データディレクトリ: /var/lib/redis/6379 //データファイルパス

実行可能ファイル: /usr/local/redis/bin/redis-server //実行可能ファイルのパス

Cl 実行可能ファイル: /usr/local/redis/bin/redis-cli //クライアント コマンド ライン ツール

2: プロセスを見る

[root@localhost utils]# netstat -anpt | grep redis

3: サービス制御

[root@localhost ~]#/etc/init.d/redis_6379 停止

[root@localhost ~]#/etc/init.d/redis_6379 開始

[root@localhost ~]#/etc/init.d/redis_6379 再起動

[root@localhost ~]#/etc/init.d/redis_6379 ステータス

4: 設定パラメータの変更

[root@localhost ~]#vim /etc/redis/6379.conf

127.0.0.1 をバインド 192.168.10.101    // リスニングホストアドレス

ポート 6379 //ポート

悪魔化する はい //デーモンプロセスを有効にする

pidファイル /var/run/redis_6379.pid //PIDファイルを指定

ログレベル通知 //ログレベル

ログファイル /var/log/redis_6379.log //ログファイルを指定

[root@localhost~]#/etc/init.d/redis_6379 再起動

[root@localhost utils]# netstat -anpt | grep redis

3.Redisコマンドツール

Ø redis-server: Redisを起動するためのツール。

Ø redis-benchmark: このマシン上の Redis の実行効率を検出するために使用されます。

Ø redis-check-aof: AOF 永続ファイルを修復します。

Ø redis-check-rdb: RDB 永続ファイルを修復します。

Ø redis-cli: Redis コマンドライン ツール。

1: redis-cli コマンドラインツール

(1) ローカルRedisに接続する

[root@localhost ~]# redis-cli

127.0.0.1:6379>

(2) Redisサービスが起動しているかをテストする

127.0.0.1:6379> ピング

ポン

(3) リモート接続

[root@localhost ~]#redis-cli -h 192.168.10.101 -p 6379

2: 助けを求める

Ø ヘルプ@<group> :得る<group> ; のコマンドのリスト。

Ø助けてください<command> : 特定のコマンドのヘルプを表示します。

Ø助けてください<tab> : 役立つ可能性のあるトピックのリストを取得します。

述べる:

Ø助けてください<tab> : 役立つ可能性のあるトピックのリストを取得します。

「ヘルプ」と入力した後、Tab キーを押します

(1)リスト データ型に関連するすべてのコマンドを表示する

127.0.0.1:6379&gt;ヘルプ@リスト

(2)set コマンドのコマンド ヘルプを表示する

127.0.0.1:6379&gt;ヘルプセット

3: redis-ベンチマークテストツール

redis-benchmark は、Redis サービスのパフォーマンスを効果的にテストできる公式の Redis パフォーマンス テスト ツールです。

Ø -h: サーバーのホスト名を指定します。

Ø -p: サーバーポートを指定します。

Ø -s: サーバーソケットを指定します。

Ø -c: 同時接続の数を指定します。

Ø -n: リクエストの数を指定します。

Ø -d: SET/GET値のデータサイズをバイト単位で指定します。

Ø -k:1=キープアライブ 0=再接続;

Ø -r: SET/GET/INCR はランダムなキーを使用し、SADD はランダムな値を使用します。

Ø -P: パイプを介した伝送<numreq>聞く;

Ø -q: Redisを強制終了します。クエリ/秒の値のみが表示されます。

Ø --csv: CSV 形式で出力します。

Ø -l: ループを生成し、テストを永続的に実行します。

Ø -t: テスト コマンドのカンマ区切りリストのみを実行します。

Ø -I: アイドルモード。 N 個のアイドル接続のみを開いて待機します。

(1) テストリクエストのパフォーマンス

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000 //IP アドレス 192.168.10.101 およびポート 6379 のパフォーマンスを持つ Redis サーバーに 100 の同時接続と 100000 のリクエスト テストを送信します

述べる:

Ø -h: サーバーのホスト名を指定します。

Ø -p: サーバーポートを指定します。

Ø -c: 同時接続の数を指定します。

Ø -n: リクエストの数を指定します。

====== MSET (10 キー) ======

100000件のリクエストが1.02秒で完了しました

100 台の並列クライアント ##100 の同時接続

3バイトのペイロード

生き続ける: 1

87.25% &lt;= 1 ミリ秒 ##87.25% のコマンド実行時間は 1 ミリ秒以下です

99.90% &lt;= 2 ミリ秒

100.00% &lt;= 2 ミリ秒

97943.19 リクエスト/秒 #1秒あたりのリクエスト数

(2) テストアクセス性能

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

述べる:

Ø -h: サーバーのホスト名を指定します。

Ø -p: サーバーポートを指定します。

Ø -d: SET/GET値のデータサイズをバイト単位で指定します。

Ø -q: Redisを強制終了します。クエリ/秒の値のみが表示されます。

PING_INLINE: 1秒あたり121506.68リクエスト //1 秒あたりに完了する PING 操作の数

PING_BULK: 1秒あたり124378.11リクエスト

設定: 1秒あたり121654.50リクエスト //SET キー値の完了が 1 秒間に何回行われるか

GET: 1秒あたり122100.12リクエスト //1 秒あたりに完了した GET キー値の数

INCR: 1秒あたり118764.84リクエスト //1 秒あたりに完了するアトミック カウントの数

LPUSH: 1秒あたり112612.61リクエスト

RPUSH: 1秒あたり118623.96リクエスト

LPOP: 1秒あたり107874.87リクエスト

RPOP: 1秒あたり114416.48リクエスト

SADD: 1秒あたり123304.56リクエスト

HSET: 1秒あたり122249.38リクエスト

SPOP: 1秒あたり128040.97リクエスト

LPUSH (LRANGE のベンチマークに必要): 1 秒あたり 116686.12 リクエスト

LRANGE_100 (最初の 100 要素): 1 秒あたり 40016.00 リクエスト

LRANGE_300 (最初の 300 要素): 1 秒あたり 11991.85 リクエスト

LRANGE_500 (最初の 450 要素): 1 秒あたり 7381.71 リクエスト

LRANGE_600 (最初の 600 要素): 1 秒あたり 5230.67 リクエスト

MSET (10 キー): 1 秒あたり 92421.44 リクエスト //1 秒あたりの複数のキー vラウエリクエスト数

(3)セットおよびlpush動作性能

[root@localhost ~]# redis-benchmark -t set,lpush -n 100000 -q //set および lpush 操作中に、このマシン上の Redis サービスのパフォーマンスをテストします。

述べる:

Ø -n: リクエストの数を指定します。

Ø -q: Redisを強制終了します。クエリ/秒の値のみが表示されます。

Ø -t: テスト コマンドのカンマ区切りリストのみを実行します。

SET: 1秒あたり121951.22リクエスト

LPUSH: 1秒あたり127226.46リクエスト

4. レディス 一般的なデータベースコマンド

Ø セット: データを保存する基本的なコマンド形式は次のとおりです。 キー値を設定する

Ø 得る: データを取得します。基本的なコマンド形式は次のとおりです。 キーを取得

1関連コマンド

存在する レディス データベース内で、 関連するコマンドは主に以下のとおりです。

1) キーと値のペアを追加します

使用 キー このコマンドは、ルールに準拠するキー値のリストを取得でき、通常はそれらを組み合わせることができます。* 、?使用するオプション。

127.0.0.1:6379>k1 1 を設定する

わかりました

127.0.0.1:6379>k2 2 を設定する

わかりました

127.0.0.1:6379>セットk3 3

わかりました

127.0.0.1:6379>セット v1 4

わかりました

127.0.0.1:6379>セットv5 5

わかりました

(2) 現在のデータベース内のすべてのキーを表示する

127.0.0.1:6379>キー  *  

1) 「先生」

2) 「k1」

3) 「k2」

4) 「k3」

5) 「v1」

6) 「v5」

127.0.0.1:6379>セット v22 5

わかりました

(3) 現在のデータベースを表示するには 冒頭のデータ

127.0.0.1:6379>キー v*    

1)「v1」

2) 「v5」

3) 「v22」

(4) 現在のデータベースを表示するには 開始後の任意のデータが含まれます

127.0.0.1:6379>キーズv?   

1)「v1」

2) 「v5」

(5) 現在のデータベースを表示するには 始まり 先頭以降の任意の 2 桁のデータが含まれます

127.0.0.1:6379>KEYS v??   

1) 「v22」

2:存在する

存在する コマンドはキー値が存在するかどうかを判断できます

127.0.0.1:6379>存在する教師

(整数) 1

結果は 1 です。つまり、 教師 キーが存在します

127.0.0.1:6379>お茶が存在する

(整数) 0

結果は 0 です。つまり、 お茶 キーが存在しません

3:削除

デル このコマンドは、指定されたファイルを削除できます。

127.0.0.1:6379>キー *

1) 「先生」

2) 「v1」

3) 「v22」

4) 「k3」

5) 「k1」

6) 「k2」

7) 「v5」

127.0.0.1:6379> デルv5

(整数) 1

127.0.0.1:6379>v5 を入手

(ゼロ)

4:タイプ

使用 タイプ コマンドが取得できる 対応する 価値 値の型

127.0.0.1:6379>タイプk1

述べる:

Redis でサポートされるデータ型

  • 文字列: キー値のキャッシュに使用される最も単純なタイプ (通常の set および get)。
  • ハッシュ: マップに似た構造。通常、オブジェクトなどの構造化データを Redis にキャッシュできます。
  • リスト: リストは順序付きリストです。リストを使用して、ファン リスト、記事コメント リストなどのリスト タイプのデータ構造を保存できます。
  • Set: Set は、重複を自動的に削除する順序付けされていないコレクションです。
  • ソートセット: ソートセットは重複排除されていますが、書き込み時にスコアが与えられ、スコアに従って自動的にソートされます。

5:名前を変更する

名前を変更する このコマンドは既存のものに対するものです 名前を変更する

実際に使用する場合は、 存在する ターゲットを表示するコマンド が存在する場合は、実行するかどうかを決定します 名前を変更する 重要なデータの上書きを避けるためのコマンド

127.0.0.1:6379>キー v*

1)「v1」

2) 「v22」

127.0.0.1:6379>名前を v22 v2 に変更

わかりました

127.0.0.1:6379>キー v*

1)「v1」

2) 「v2」

127.0.0.1:6379>v1 を取得

"4"

127.0.0.1:6379>v2 を入手

"5"

127.0.0.1:6379>v1 v2の名前を変更する

わかりました

127.0.0.1:6379>v1 を取得

(ゼロ)

127.0.0.1:6379>v2 を入手

"4"

6:名前変更

名前変更 このコマンドの機能は、既存のファイルを変更することです。 名前の変更を実行し、新しい名前が存在するかどうかを確認します。

使用名前変更 コマンドの名前が変更されると、ターゲットが 存在する場合、名前は変更されません。

127.0.0.1:6379>キー *

1) 「先生」

2) 「k3」

3) 「k1」

4) 「k2」

5) 「v2」

127.0.0.1:6379>先生をもらう

「張龍」

127.0.0.1:6379>v2 を入手

"4"

127.0.0.1:6379>renamenx v2 教師

(整数) 0

127.0.0.1:6379>キー *

1) 「先生」

2) 「k3」

3) 「k1」

4) 「k2」

5) 「v2」

127.0.0.1:6379>先生をもらう

「張龍」

127.0.0.1:6379>v2 を入手

"4

7:データベースサイズ

データベースサイズ コマンドの目的は、現在のデータベースを表示することです。 の数。

127.0.0.1:6379> データベースサイズ

(整数) 5

5. 複数のデータベースに共通のコマンド

1: 複数のデータベース間の切り替え

レディス 何も変更せずにデフォルトで含まれています 16 データベース、データベース名は数字です 0-15 順番に名前を付ける

(1)シリアル番号に切り替える 10 データベース

127.0.0.1:6379>10を選択

わかりました

(2)シリアル番号に切り替える 15 データベース

127.0.0.1:6379[10]>15を選択

わかりました

(3)シリアル番号に切り替える 0 データベース

127.0.0.1:6379[15]>0を選択

2: 複数のデータベース間でのデータの移動

レディス 複数のデータベースは、たとえばデータベース内である程度独立しています。 0 上のストア k1 データ、その他 1-15 データベース上では閲覧できません。

127.0.0.1:6379>セットk1 100

わかりました

127.0.0.1:6379>k1を取得

"100"

127.0.0.1:6379>1を選択

わかりました

127.0.0.1:6379[1]>k1を取得

(ゼロ)

127.0.0.1:6379[1]>0を選択 //ターゲットデータベースに切り替える 0

わかりました

127.0.0.1:6379>k1を取得 //対象のデータが存在するか確認する

"100"

127.0.0.1:6379>k1 1 を動かす //データベース 0 真ん真ん中 k1 データベースに移動 1 真ん真ん中

(整数) 1

127.0.0.1:6379>1を選択 //ターゲットデータベースに切り替える 1

わかりました

127.0.0.1:6379[1]>k1を取得 //移動されたデータを表示する

"100"

127.0.0.1:6379[1]> 0を選択

わかりました

127.0.0.1:6379> k1を取得 //データベース内 0 では閲覧できません k1 価値

(ゼロ)

3: データベース内のデータを消去する

現在のデータベース データをクリアするには、次を使用します。 フラッシュDB

コマンドの実装。すべてのデータベース データをクリアします。 フラッシュホール コマンドの実装

6. Redis の永続化

レディス すべてのデータはメモリに保存され、その後非同期的にディスクに随時保存されます。(これはと呼ばれます半永続モード”); すべてのデータ変更を ファイルのみ追加(aof)(これはと呼ばれます完全永続モード”)

Redis データはメモリに保存されるため、永続化が設定されていない場合、レディス 再起動後、すべてのデータが失われます。したがって、有効にする必要があります レディス 永続化機能はデータをディスクに保存します。 レディス 再起動後、ディスクからデータを回復できます。レディス 永続化のために 2 つのメソッドが提供されています。1 つは次のとおりです。 翻訳データベースRedis データベース 持続性(原則は リードインメモリデータベースロギングのタイミング ごみ ディスクへ 翻訳データベース 永続性)、もう 1 つは AOF追加のみ ファイル持続性(原則は リード 操作ログはファイルに追記形式で書き込まれます。

1:翻訳データベース そして AOF 違い

(1) RDBとは何ですか?

デフォルトの方法

RDB 永続化は、現在のプロセス データのスナップショットを生成し、ハードディスクに保存するプロセスです。RDB 永続化をトリガーするプロセスは、手動トリガーと自動トリガーに分かれています。

トリガーメカニズム: 手動トリガーはそれぞれ save コマンドと bgsave コマンドに対応します。

save コマンド: RDB プロセスが完了するまで現在の Redis サーバーをブロックします。大量のメモリを備えたインスタンスの場合、時間のブロックが発生します。オンライン環境での使用は推奨されません。

bgsave コマンド: Redis プロセスは fork (プロセスの作成に使用される関数) 操作を実行して子プロセスを作成します。RDB 永続化プロセスは子プロセスを担当し、完了後に自動的に終了します。ブロッキングはフォークフェーズ中にのみ発生します。

(2) RDBのメリットとデメリット:

RDB の利点:

RDB は、特定の時点での Redis データのスナップショットを表すコンパクトな圧縮バイナリ ファイルです。バックアップ、フルコピー、その他のシナリオに非常に適しています。たとえば、6 時間ごとに bgsave バックアップを実行し、災害復旧のために RDB ファイルをリモート マシンまたはファイル システムにコピーします。

Redis は RDB をロードし、AOF 方式よりもはるかに高速にデータを回復します。

RDB の欠点:

RDB モードのデータは、リアルタイムの永続性/第 2 レベルの永続性を実現できません。 bgsave が実行されるたびに、子プロセスを作成するためにフォーク操作が実行されます。これは重量のある操作であり、頻繁に実行するとコストが高くなりすぎます。

RDB ファイルは特定のバイナリ形式で保存されます。Redis バージョンの進化に伴い、古いバージョンの RDB サービスが新しいバージョンの RDB 形式と互換性がないという問題が発生します。

2.AOFとは何ですか?

AOF (追加専用ファイル) 永続性: 各書き込みコマンドを独立したログに記録し、AOF ファイル内のコマンドを再実行して、再起動時にデータを復元します。 AOF の主な機能は、データの永続化に関するリアルタイムの問題を解決することです。現在、AOF は Redis の永続化の主流となっています。

2 つのどちらかを選択する基準:

キャッシュの一貫性を高める代わりに、パフォーマンスをある程度犠牲にします (AOF),

書き込み操作が頻繁に行われる場合は、パフォーマンスの向上と引き換えにバックアップを有効にせず、手動操作を待ちます。 保存 もう一度バックアップを作成してください (翻訳データベース

述べる:

redies の再起動後に永続ファイルをロードする必要がある場合は、AOF ファイルが選択されます。

最初に RDB が有効になってから AOF が有効になり、RDB が最初に永続化された場合、RDB ファイルの内容は AOF によって上書きされます。

3:レディス 永続化構成

(1)翻訳データベース 永続化構成

[root@localhost ~]# vim /etc/redis/6379.conf

6379.confを開きます ファイルの後に検索します 保存, 以下のように構成情報が表示されます。

  • Ø save 900 1: 900 秒 (15 分) 後、少なくとも 1 つのキーが変更された場合、メモリ スナップショットをダンプします。
  • Ø save 300 10: 300 秒 (5 分) 後、少なくとも 10 個のキーが変更された場合、メモリ スナップショットをダンプします。
  • Ø save 60 10000: 60 秒 (1 分) 後、少なくとも 10000 個のキーが変更された場合、メモリ スナップショットをダンプします。
  • dbfilename dump.rdb: RDB ファイル名 ##254 行目
  • dir /var/lib/redis/6379: RDB ファイルパス ##264 行目
  • rdbcompression yes: ##242行を圧縮するかどうか

(2)AOF 永続化構成

存在する レディス 構成ファイルには次の 3 つの同期方法があります。

  • appendonly yes: AOF 永続性を有効にする (デフォルトは no) ##673 行
  • appendfilename "appendonly.aof ": AOF ファイル名 ##677 行目
  • # 常にappendfsync
  • 毎秒追加同期
  • # appendfsync なし

always: 同期永続性、データが変更されるたびに、すぐにディスクに書き込まれます。

Everysec: デフォルトで推奨、非同期で毎秒記録します (デフォルト値)

no: 同期は行わず、同期方法の決定はオペレーティング システムに委ねられます。

  • aof-load-truncated yes ##769行

問題がある可能性がある最後の命令を無視する

[root@localhost ~]#/etc/init.d/redis_6379 再起動

(2)AOF書き換え

解決するために AOF ファイル サイズが増加し続ける場合、ユーザーは次の宛先に報告できます。 レディス 送信 BGREWRITEAOF注文。BGREWRITEAOF コマンドは次の方法で削除されます。 AOF ファイル内のオーバーライドする冗長コマンド (リライトAOFファイル、作成 AOF ファイルサイズはできるだけ小さくしてください。

127.0.0.1:6379&gt; bgrewriteaof

バックグラウンド追加のみのファイル書き換えが開始されました

# ログがBGREWRITEAOFの場合、もし書き換え時にfsyncを追加しない「yes」に設定すると、新しい書き込み操作は fsync と同期されず、バッファーに一時的に保存されるだけになります。 , ディスク IO 操作の競合を避けるため、再書き込みが完了するまで待ってから書き込みを行ってください。 Redis のデフォルトは no です。

書き換え時にfsyncを追加しない

# 現在の AOF ファイルのサイズが、最後のログ書き換え時の AOF ファイルのサイズの 2 倍である場合、BGREWRITEAOF 操作が発生します。

自動 Aof 書き換え率 100

述べる:

100は次のことを指しますAOF ファイルの増加率は、最後の書き換えと比較した現在の AOF ファイルの増加率を指します。100は2倍

#Reids の初回起動時にファイル サイズが小さいために頻繁に BGREWRITEAOF が発生するのを避けるために、BGREWRITEAOF コマンドを実行するための現在の AOF ファイルの最小値。

自動 aof 書き換え最小サイズ 64 MB

7. パフォーマンス管理

1: メモリ情報を表示する

192.168.9.236:7001> 情報メモリ

used_memory:1210776 #使用されているメモリのサイズ、バイト単位で
used_memory_human:1.15M # ユニット付きディスプレイ、Mで
used_memory_rss:7802880 # オペレーティング システムの観点から、redis はどれくらいのメモリを占有しますか?
used_memory_rss_human:7.44M # ユニット付き表示
maxmemory:1073741824 # 最大メモリサイズ
maxmemory_human:1.00G # ユニット付き表示

2: リサイクル戦略

最大メモリポリシー:リサイクル戦略

Ø 揮発性-lru: 許可します レディス データセット全体から最も最近使用されていないものを選択します 消去

Ø 揮発性TTLキーの有効期限に応じて削除します 

Ø 揮発性ランダム: 有効期限を設定して、データ収集から除外するデータをランダムに選択します。

Ø allkeys-lru:使用 LRU アルゴリズムはすべてのデータセットからデータを削除します。

Ø allkeys-ランダム: データ収集から除外するデータをランダムに選択します。

Ø 立ち退きなし:データ消去禁止(デフォルト値)

述べる:

キーの有効期限を設定する

有効期限 v1 10

v1 の有効期限は 10 秒です

述べる:

いつ レディス メモリ不足のため、1 つを再利用する必要がある 時間、レディス 最初に考慮すべきことは、最も古いデータではなく、最も最近使用されていないデータをリサイクルすることです。 または有効期限が近づいています からランダムに 1 つ選択します 、データセットから削除されました

8. Redisのパスワードを設定する

1:設定方法

方法 1. 構成ファイル redis.conf を使用してパスワードを設定する

次のように、requirepass キーワードとそれに続くパスワードを見つけます。デフォルトではコメントアウトされています。つまり、デフォルトではパスワードは必要ありません。

コメントを開いて自分のパスワードに設定し、再起動します

方法 2. 名前を付けてパスワードを設定する

redis-cli を使用して redis に接続し、次のコマンドを実行します。

config に requirepass 123456 を設定します

実行完了後は再起動する必要はありません。クライアントを終了して再度ログインするときにパスワードを入力する必要があります。

2.接続方法

1. 接続時にパスワードを入力します

[root@localhost bin]# ./redis-cli -a 123456

2. 最初に接続してからパスワードを入力します

[root@localhost bin]# ./redis-cli127.0.0.1:6379&gt; 認証 123456

3: closeメソッド

[root@localhost bin]# ./redis-cli -a 123456 シャットダウン

4: 違い

1) 設定ファイルを変更して設定したパスワードは永続的に有効になりますが、コマンドを使用して設定したパスワードは一時的に有効になり、再起動すると無効になります。

2) 設定ファイルに設定したパスワードを変更するには再起動が必要です。コマンドで設定したパスワードはログアウトして再度ログインすると有効になり、再起動すると無効になります。

3) コマンドの優先度が設定ファイルの優先度より高い