マインドマップギャラリー レディス
これは Redis に関するマインド マップです。主な内容は、8. Redis の永続性、7. Redis のトランザクション、6. パブリッシュとサブスクライブ、2. 起動、1. Redis 7.0 のインストール、5. Redis 構成ファイル、4. 、Redis データです。 type、3. Redis キー (キー) 関連のコマンド。
2024-03-28 15:31:48 に編集されましたレディス
1.Redis7.0をインストールする
1. ダウンロードして opt ディレクトリに置きます。
https://redis.io/download/
2. opt ディレクトリで解凍します。
tar -zxvf redis-7.0.0.tar.gz
減圧後
3. ディレクトリ redis-7.0.11 を入力します。
gccをインストールする
yum インストール gcc-c
作る
インストールする
スクリーンショット
4. デフォルトのインストールディレクトリ
/usr/local/bin
Linux の /usr/local は、Windows システムの C:\Program Files に似ています。
チェック
redis-benchmark: パフォーマンス テスト ツール。サービスの開始後にこのコマンドを実行して、ノートブックのパフォーマンスを確認します。
redis-check-aof: 問題のある AOF ファイルを修復する
redis-check-dump: 問題のある dump.rdb ファイルを修正します
redis-cli: クライアント、操作の入り口
redis-sentinel: Redis クラスターによって使用されます
redis-server: Redisサーバー起動コマンド
5. redis.conf 構成ファイルを変更します。
2.スタート
Redis のデフォルトのインストール ディレクトリを入力します。
redis-server: Redisサーバー起動コマンド
redis-cli: クライアント、操作の入り口
パスワードが設定されている場合:認証パスワード
バックグラウンドで開始
Redis.confをバックアップする
ノーをイエスにデーモン化する
[root@ecs-353138 redis-7.0.0]# redis-server ./redis.conf
Redis を起動するには、設定ファイルを指定する必要があります。実際には、redis は、インストール ディレクトリの redis.conf ではなく、内部設定ファイルを読み取ります。
閉鎖
単一インスタンスのシャットダウン: redis-cli -a パスワードによるシャットダウン
マルチインスタンスのシャットダウン: ポートのシャットダウンを指定: redis-cli -p 6379 shutdown
Redis をアンインストールする
1. Redis サービスを停止します
2. /usr/local/lib ディレクトリ内の redis 関連ファイルを削除します。
3. Redis キー関連のコマンド
キー*
現在のライブラリ内のすべてのキーを表示する
キーが存在します
特定のキーが存在するかどうかを判断する
キーを入力してください
キーのタイプを確認してください
デルキー
指定したキーデータを削除します
リンク解除キー
値に基づいて非ブロック削除を選択する
Redis UNLINK コマンドは DEL コマンドに非常に似ており、指定されたキーを削除するために使用されます。 DEL と同様に、キーが存在しない場合は無視されます。ただし、このコマンドはコマンド外部のスレッドで実際のメモリ再利用を実行するため、DEL とは異なりブロックされません。これがコマンド名の由来です。UNLINK コマンドは単にキーをキースペースから切断します。実際の削除は後で非同期的に行われます。
キーの期限切れ 10
10 秒、指定されたキーの有効期限を設定します
TTLキー
有効期限までの残り秒数を確認します。-1 は有効期限が切れないことを意味し、-2 は有効期限が切れたことを意味します。
0を選択してください
スイッチデータベース
サイズ
現在のデータベース内のキーの数を表示する
フラッシュデータベース
現在のライブラリをクリアする
フラッシュオール
すべてのライブラリを強制終了します
4. Redisのデータ型
5 つの基本的なデータ型
弦
導入
String は Redis の最も基本的なタイプであり、1 つのキーが 1 つの値に対応します。 String 型はバイナリ セーフです。これは、Redis 文字列には任意のデータを含めることができることを意味します。たとえば、jpg 画像やシリアル化されたオブジェクトなどです。 Redis の文字列値は最大 512M です。
共通コマンド
キー値NXを設定
NX: キーがデータベースに存在しない場合、キーと値をデータベースに追加できます XX: キーがデータベースに存在する場合、キーと値をデータベースに追加できます。これは、NX パラメータとは相互に排他的です。 例: キーのタイムアウト秒数 PX: ミリ秒単位のキータイムアウト、EX と相互排他的
キーと値のペアを追加する
キーを取得します
対応するキー値を問い合わせる
キー値を追加する
指定された値を元の値の末尾に追加します
ストレンキー
値の長さを取得する
setnx キーの値
キーが存在しない場合にのみキーの値を設定します
増分キー
キーに格納されている数値を1増やします。
デクリキー
keyに格納されている数値を1減らす
数値のみを操作できます。空の場合、新しい値は 1 または -1 になります。
incrby / decrby キーのステップ サイズ
キーに格納されている数値を増減します。カスタムステップサイズ
mset キー 1 値 1 キー 2 値 2
1 つ以上のキーと値のペアを同時に設定します
mget キー1 キー2
1つ以上の値を同時に取得します
msetnx キー 1 値 1 キー 2 値 2
原子性、1 つが失敗すると、すべてが失敗します。
指定されたすべてのキーが存在しない場合にのみ、1 つ以上のキーと値のペアを同時に設定します。
getrange キーの開始位置終了位置
Javaの部分文字列、フロントパッケージ、バックパッケージに似た値の範囲を取得します。
setrange キーの開始位置の値
keyに格納されている文字列値を開始位置からvalueで上書きします(インデックスは0から始まります)
setex キーの有効期限値
キーの値を設定するときに、有効期限を秒単位で設定します。
getsetキー値
古い値を新しいものに置き換え、新しい値を設定し、同時に古い値を取得します
データ構造
String のデータ構造は Simple Dynamic String (SDS) です。
リスト
導入
単一キーの複数の値を挿入順に並べ替えると、リストの先頭 (左) または末尾 (右) に要素を追加できます。
共通コマンド
lpush / rpush キー value1 value2
左/右から 1 つ以上の値を挿入します
lpop/rpop
左/右から値を吐き出します。値はキー内にあり、値はキー内にあります。
rpoplpush キー1 キー2
key1 リストの右側から値を吐き出し、key2 リストの左側に挿入します。
lrange キー スタート ストップ
lrange age 0 -1、すべてを取得することを意味します
インデックスの添え字に従って要素を取得します (左から右)
lindex キーインデックス
インデックスの添え字に従って要素を取得します (左から右)
レンキー
リストの長さを取得する
linsert キーを値 newvalue の前に挿入します
newvalue の値を value の前に挿入します
lremキーn値
左からn個の値を削除します(左から右へ)
lset キーインデックス値
リストキーの添え字がindexの値をvalueに置き換えます。
データ構造
①Listのデータ構造はquickListです。 ② まず、リストの要素が小さい場合、この構造は圧縮されたリストである ziplist が使用されます。 ③データ量が比較的多い場合はクイックリストに変更されます。
セット
導入
自動重複排除と Set は文字列型の順序付けされていないコレクションで、最下層は空の値を持つハッシュ テーブルです。追加、削除、クエリの複雑さは O(1) です。
共通コマンド
sadd キー値 1 値 2
1 つ以上のメンバー要素をコレクション キーに追加すると、既存のメンバー要素は無視されます。
スメンバーズキー
セットからすべての値を取得します
sismember キーの値
設定されたキーに値が含まれているかどうかを判断します。1 はあり、0 はありません。
カードキー
コレクション内の要素の数を返します。
スレム年齢値1 値2
コレクションから要素を削除する
スポッキー
コレクションからランダムな値を吐き出す
srandメンバーキーn
このセットから n 個の値をランダムに取得します。コレクションからは削除されません
移動元の移動先の値
コレクション内の値をあるコレクションから別のコレクションに移動する
焼結キー1 キー2
2 つのコレクションの交差要素を返します。
サンオン キー1 キー2
2 つのコレクションの結合要素を返します。
sdiff キー 1 キー 2
2 つのセットの差分要素 (key1 内の要素、key2 内の要素を除く) を返します。
データ構造
① Set のデータ構造は dict 辞書であり、辞書はハッシュ テーブルを使用して実装されます。 ② Java における HashSet の内部実装は HashMap を使用しますが、すべての値は同じオブジェクトを指します。 Redis のセット構造にも同様のことが当てはまり、内部的にはハッシュ構造が使用され、すべての値が同じ内部値を指します。
ハッシュ
導入
Redis ハッシュはキーと値のペアのコレクションであり、文字列型のフィールドと値のマッピング テーブルであり、オブジェクトの保存に特に適しています。
共通コマンド
hset キーフィールドの値
キーコレクションのフィールドキーに値を割り当てます。
hgetキーフィールド
key1コレクションフィールドから値を取得します
hmset キー 1 フィールド 1 値 1 フィールド 2 値 2
ハッシュ値を一括で設定する
hexists キー フィールド
指定されたフィールド field がハッシュ テーブル キーに存在するかどうかを確認します。
hkeysキー
このハッシュ セットのすべてのフィールドを一覧表示します
hvalsキー
ハッシュセットのすべての値をリストする
hincrby キー フィールドの増分
ハッシュ テーブル キーのフィールド field の値に増分 1 -1 を加算します。
hsetnxキーフィールドの値
フィールド field が存在しない場合にのみ、ハッシュ テーブル キーのフィールド field の値を value に設定します。
データ構造
ハッシュ タイプに対応するデータ構造には、ziplist (圧縮リスト) と hashtable (ハッシュ テーブル) の 2 つがあります。フィールド値の長さが短く、数値が小さい場合は ziplist を使用し、それ以外の場合は hashtable を使用します
zset (順序セット)
導入
zset は通常のセットと非常によく似ていますが、重複する要素を持たない文字列コレクションです。違いは、順序付けされたセットの各メンバーがスコアの低いものからソートするために使用されることです。最も高いスコアによって設定されます。セットのメンバーはユニークですが、スコアは繰り返すことができます
共通コマンド
zadd キー スコア 1 値 1 スコア 2 値 2
1 つ以上のメンバー要素とそのスコア値を順序付きセットのキーに追加します
zrange キー スタート ストップ [WITHSCORES]
添字が start と stop の間にある順序付きセット キーの要素を返します。WITHSCORES を使用すると、スコアと値を結果セットに返すことができます。
zrangebyscore キーの最小値最大値
スコア値が最小と最大の間 (最小または最大に等しい場合を含む) であるソートされたセット キーのすべてのメンバーを返します。順序付きセットのメンバーは、スコア値の増加順に (小さいものから大きいものへ) 並べられます。
zrevrangebyscore キーの最大値、最小値
最大から最小の順に並べ替えるように変更します
zincrby キーの増分値
要素のスコアに増分を追加します
zremキーの値
コレクション内の指定された値を持つ要素を削除します
zcount キー最小最大
集合、小数区間内の要素の数をカウントします。
zrankキーの値
セット内の値のランクを 0 から返します。
データ構造
ハッシュ、ハッシュの機能は、要素値と重みスコアを関連付けて、要素値の一意性を確保することです。要素値を通じて対応するスコア値を見つけることができます。
ジャンプリスト ジャンプリストの目的は、要素値をソートし、スコアの範囲に従って要素リストを取得することです。
3 つの高度なデータ型
ビットマップ
ビットマップ自体はデータ型ではなく、実際には文字列 (キーと値) ですが、文字列のビットを操作できます。
ハイパーログログ
Redis HyperLogLog は、カーディナリティ統計に使用されるアルゴリズムです。 HyperLogLog の利点は、入力要素の数または量が非常に大きい場合でも、カーディナリティの計算に必要なスペースが常に固定され、非常に小さいことです。
地理空間
GEO: ジオグラフィック、地理情報の略。このタイプは要素の 2 次元座標、つまり地図上の緯度と経度です。このタイプに基づいて、redis は経度および緯度の設定、クエリ、範囲クエリ、距離クエリ、経度および緯度のハッシュなどの一般的な操作を提供します。
5. Redis設定ファイル
ネットワーク関連の設定
練る
デフォルトでは、bind=127.0.0.1 はこのマシンからのアクセス要求のみを受け入れることができます。
保護モード
ローカル アクセス保護モードを no に設定します
ポート
ポート、デフォルト 6379
タイムアウト
アイドル状態のクライアントがシャットダウンするまでに何秒かかりますか。0 はこの機能をオフにすることを意味します。つまり、決して閉じないでください
tcp-キープアライブ
単位は秒です。0 に設定するとキープアライブ検出は行われません。60 に設定することをお勧めします。
クライアントにアクセスするためのハートビート検出 (n 秒ごとに 1 回)
全般全般
デーモン化する
(デーモン) バックグラウンド プロセスであるかどうか、yes に設定します。
pidfile
pid ファイルが保存される場所。各インスタンスは異なる pid ファイルを生成します。
ログレベル
本番環境の場合は、通知または警告を選択します。
Redis は、デバッグ、詳細、通知、警告の合計 4 つのレベルをサポートします。デフォルトは通知です。
ログファイル
ログファイル名
データベース 16
ライブラリの数を設定します。デフォルトは 16 です。デフォルトのデータベースは 0 です。SELECT <dbid> コマンドを使用して、接続時にデータベース ID を指定できます。
SECURITYセキュリティ
パスワードを設定してください
LIMITS限界
最大クライアント
Redis が同時に接続できるクライアントの数を設定する
デフォルトは 10000 クライアントです
この制限に達すると、redis は新しい接続要求を拒否し、これらの接続要求者に対して「最大クライアント数に達しました」と応答します。
最大メモリ
maxmemory ポリシー
maxmemory-サンプル数
6. 公開と購読
パブリッシュとサブスクライブとは何ですか?
Redis のパブリッシュおよびサブスクライブ (pub/sub) はメッセージ通信モデルです。送信者 (パブ) がメッセージを送信し、サブスクライバー (サブ) がメッセージを受信します。
クライアントがチャンネルに登録する
メッセージがこのチャネルにパブリッシュされると、メッセージは購読しているクライアントに送信されます。
コマンドの実装
クライアントを開いてチャンネル 1 を購読します
チャンネル登録1
別のクライアントを開き、メッセージ「hello」をchannel1にパブリッシュします。
チャンネル1を公開しますこんにちは
返される 2 はサブスクリプションの数です
7. Redis トランザクション
1. 定義
Redis トランザクションは単一の分離された操作です。トランザクション内のすべてのコマンドはシリアル化され、順番に実行されます。トランザクションの実行中、他のクライアントから送信されたコマンド要求によって中断されることはありません。
Redis トランザクションの主な機能は、複数のコマンドを直列に接続して、他のコマンドがキューに入るのを防ぐことです。
2. マルチ、実行、破棄
① Multi コマンドの入力を皮切りに、入力されたコマンドは順番にコマンドキューに入力されますが、Exec が入力されるまで実行されず、Redis は前のコマンドキューにあるコマンドを順番に実行します。 ②チーム編成途中で、チーム編成を破棄することでチーム編成を放棄することができます。
チーム結成成功、提出成功
チーム編成段階でエラーが報告され、送信に失敗しました。
チーム編成は成功し、提出は成功または失敗しました。
3. トランザクションエラーの処理
キュー内のコマンドがエラーを報告した場合、すべてのキューは実行中にキャンセルされます。
実行フェーズ中にコマンドのエラーが報告された場合、エラーを報告したコマンドのみが実行されず、他のコマンドはロールバックされずに実行されます。
4. Redisトランザクションの3つの特徴
個別の隔離作業
トランザクション内のすべてのコマンドはシリアル化され、順番に実行されます。トランザクションの実行中、他のクライアントから送信されたコマンド要求によって中断されることはありません。
分離レベルの概念がない
トランザクションが送信されるまでは命令が実際に実行されないため、キュー内のコマンドは送信されるまで実際には実行されません。
アトミック性の保証はない
トランザクション内のコマンドの実行が失敗した場合でも、後続のコマンドはロールバックせずに実行されます。
8. Redis の永続化
RDB(Redisデータベース)
それは何ですか?
指定された時間間隔内にメモリ内のデータ セットのスナップショットをディスクに書き込みます。これは専門用語ではスナップショットとも呼ばれ、復元時にスナップショット ファイルがメモリに直接読み込まれます。
バックアップの実行方法
Redis は永続化のために子プロセスを個別に作成 (フォーク) し、永続化プロセスが完了した後、この一時ファイルを使用して最後に永続化されたファイルを置き換えます。プロセス全体を通じて、メイン プロセスは IO 操作を実行しないため、非常に高いパフォーマンスが保証されます。大規模なデータ リカバリが必要であり、データ リカバリの整合性がそれほど重要ではない場合は、RDB 方式の方が AOF 方式よりも効率的です。高効率。 RDB の欠点は、最後の永続化以降のデータが失われる可能性があることです。
フォーク
Fork の機能は、現在のプロセスと同じプロセスをコピーすることです。新しいプロセスのすべてのデータ(変数、環境変数、プログラムカウンタなど)は元のプロセスと同じ値になりますが、まったく新しいプロセスであり、元のプロセスの子プロセスとして機能します。
Linux プログラムでは、fork() によって親プロセスとまったく同じ子プロセスが生成されますが、その後、子プロセスは多くの場合 exec システム コールを実行します。効率性の理由から、Linux は「コピー オン ライト テクノロジ」を導入しました。
一般に、親プロセスと子プロセスは物理メモリの同じセグメントを共有します。プロセス空間内の各セグメントの内容が変更された場合にのみ、親プロセスの内容が子プロセスにコピーされます。
dump.rdb ファイル
redis.conf でファイル名を構成します。デフォルトは dump.rdb です。
アドバンテージ
大規模なデータ復旧に最適
データの整合性と一貫性の要件が高くない場合に使用するのがより適しています。
ディスク容量を節約する
早い回復
不十分
バックアップはバックアップ サイクル中に一定の間隔で作成されるため、Redis が予期せずダウンすると、最後のスナップショット以降の変更はすべて失われます。
要約する
AOF (追加専用ファイル)
それは何ですか?
各書き込み操作をログの形式で記録し (増分保存)、Redis によって実行されたすべての書き込み命令を記録します (読み取り操作は記録されません)。ファイルのみ追加できますが書き換えはできません。Redis は先頭から読み取ります。このファイルは、つまり、redis が再起動されると、ログ ファイルの内容に基づいて書き込み命令が前から後ろに実行され、データの回復作業が完了します。
AOF 永続化プロセス
AOF はデフォルトでは有効になっていません
AOF と RDB が同時に有効になっていますが、redis は誰をリッスンしますか?
AOF と RDB は同時に有効になり、システムはデフォルトで AOF データを取得します (データは失われません)。
アドバンテージ
バックアップメカニズムがより堅牢になり、データ損失の可能性が低くなります。
不十分
RDBよりも多くのディスク容量を占有します
バックアップの復元は遅くなります。
要約する