設定情報の解釈をRedisの

[構成のRedis読むことを教える - はじめに]

我々は、以下の、スタートアップのRedisサーバにロードする必要がある設定ファイルを指定することができます。

$ ./Redis-server /path/to/redis.conf
次に、我々はこの記事では、ベースのRedis-2.8.4バージョンを説明することであることを、コンフィギュレーション・ファイルをRedisの各設定項目の意味の面で注意を脱ぎました。

redis.confファイルには、効果的なコンフィギュレーションラインの100の以上の行為、注釈の600の以上の他の行為700 +ラインを、持っている公式の十分のRedis。

コンフィギュレーション・ファイルの先頭に、最初の測定単位の数を特定しました。

1K => 1000のバイト

1キロバイト=> 1024のバイト

1メートル=> 1000000のバイト

1メガバイト=> 1024×1024のバイト

1gは=> 1000000000のバイト

1ギガバイト=> 1024の1024 1024バイト

図から分かるように、ユニットケース非感受性の構成のRedis、1ギガバイトは1GBと1GBは同じです。また、これはのみサポートするのRedis、示して、バイトビット単位をサポートしていません。

Redisのは、例えば、指示にずっとC / C ++のような、「外部のプロファイルをインポートするには、マスター設定ファイル」などがサポートされています。

/path/to/other.conf含ま
あなたはRedisの設定ファイルを見てきた場合、あなたは非常に整然としたあるでしょう。Redisのプロファイルは、いくつかの大きな領域に分割して、彼らは以下のとおりです。

1.一般(一般)
2.スナップショット(スナップショット)
3.コピー(複製)
4.セキュリティ(セキュリティ)
5.リミット(限界)
6.追加モード(追記のみMODE)
7.LUAスクリプト(Luaのスクリプト)
8.遅いですログ(SLOWログ)
9.イベント通知(イベント通知)

ここでは、一つ一つを説明する必要があります。

[構成のRedis読むことを教える - 全般]

デフォルトでは、デーモンを実行し形成しないのRedis。設定項目をデーモン化のRedisことで、フォームの実行を制御することができ、yesに変更された場合、それはデーモンRedisのフォームとして実行されます:

デーモン化なし

時間の形でデーモンとして実行する場合、RedisのPIDファイルを生成し、デフォルトでは/var/run/redis.pidに生成されます。:もちろん、次のような、pidファイルによって生成されたPIDファイルの場所を指定することができます
PidFileオプション/path/to/redis.pid

デフォルトでは、マシンが接続要求、使用可能なすべてのネットワークカードに対応しますRedisの。もちろん、RedisのあなたはIPのようなバインドの設定項目に拘束を指定することができます:
バインド192.168.1.2 10.8.4.2

Redisのデフォルトのサービス・ポートは、あなたは、ポートを介して設定項目を変更することができ、6379です。ポートが0に設定されている場合は、その、Redisのは、ポートを監視しません。
ポート6379

実際には、また、UNIXソケットの方法を経由してサポートリクエストを受けるのRedis、「Redisのポートを聞いていない場合は、だけでなく、それは外の世界と通信する方法を」一部の学生は、要求されます。あなたはunixsocketの設定項目によってパスUnixソケットファイルを指定することができ、かつunixsocketpermでファイルのパーミッションを指定します。
/tmp/redis.sockのunixsocket
unixsocketperm 755
のRedisクライアントがサーバ側に要求を送信していない、積極的に密接にサーバ側のアクセスは、0は閉じないことを示し、タイムアウトにより「アイドルタイムアウト」を設けてもよいです。

タイムアウト0

60秒に設定すると、その後、サーバ側がクライアントかどうかを確認するために、接続アイドルクライアントにACK要求を開始する60秒ごとになる場合、TCP接続のキープアライブポリシーは、TCPキープアライブCI秒で設定することができます電話を切った、クライアントへの応答は、その接続が発生し閉じません。120秒までの時間のため、近くに接続。0に設定すると、キープアライブのために検出されません。
TCPキープアライブ0

Redisのサポートエントリーログレベルがログレベルの設定によって設定され、4つ、すなわち、デバッグ、冗長、予告、警告に分かれています。
ログレベルの通知

また、設定をサポートしRedisの場所ログファイルの設定項目によって生成されたログファイル。空の文字列の場合、標準出力にログ出力をRedisの。あなたは、デーモンで標準出力にログインした場合、ログはでは/ dev / nullに書かれています。
ログファイル「」

あなたはsyslogにログを印刷したい場合は、簡単にsyslogの対応によって制御することができます。:また、syslogの-identがまた、あなたのような、看板にsyslogのログを指定することができます
のsyslog-identのRedisの

Syslogのデバイスだけでなく、指定された値がUSERまたはLOCAL0-LOCAL7ことができますサポートしています。syslogは、特に、サービス自体の使用を参照してください。
syslogの-ファシリティLOCAL0

:あなたはRedisのデータベースは16が含まれているかどうRedisのためには、次のように設定し、そのデータベースの合計数を設定することができます
データベース16

いいえこのデータベースは16 0-15あろう。データベースのデフォルトのデータベースは数字のゼロです。ユーザーは、適切なデータベースを選択するために使用することを選択することができます。
[Redisの設定を読むためにあなたを教える-スナップショット]

主にRedisの永続RDB関連する構成のに関連したスナップショットは、私たちは一緒に見てみましょう。

私たちは、すなわち、RDBスナップショット機能を制御し、ディスクに保存されたデータを作るために、次の手順を使用することができます。

セーブ

たとえば:
保存// 900 1と永続をトリガするために、鍵は少なくとも15分ごとに変更されている表し
300 10 // 10の保存は、永続的にトリガするために、キーを表し、少なくとも5分ごとに変更します

60万保存//は10000キーの変更を永続的にトリガー少なくとも60秒ごとにあることを示し

あなたは無効RDBの永続化戦略にしたい場合は、それはあなたが保存、またはこのように、また、同じ効果を得ることができ、空の文字列パラメータを渡すために保存することができます任意のコマンドを設定しません:
保存「」

ユーザーはRDBのスナップショット機能を開いた場合、障害が発生した場合、Redisのは、ディスクにデータを永続化、そして、デフォルトでは、Redisのは、すべての書き込み要求の受け入れを停止します。そうすることのメリットに関するデータは、データメモリとディスクでは非常に明確ではすでに矛盾が存在することをユーザーを知らせことができるということです。この矛盾にもかかわらずRedisの、書き込み要求を受信し続けることに曲がっている場合、それはいくつかの悲惨な結果を引き起こす可能性があります。
次のRDB永続的な成功を収めた場合、Redisのは、自動的に書き込み要求の受け入れを再開します。

あなたはデータの矛盾のこの種を気またはそのような矛盾の検出と制御の他の手段を持っていない場合はもちろん、あなたは、スナップショットの書き込みが失敗したときにそうすることを、この機能をオフにすることができますが、また、Redisのは、新しい書き込み要求を受け入れ続け確保するために。設定項目は以下の通り:

ストップ書き込みオンbgsaveエラーはい

ディスクのスナップショットに保存するために、あなたは圧縮保存するかどうかを設定することができます。もしそうなら、RedisのはLZF圧縮アルゴリズムを使用します。あなたが圧縮するCPUを消費したくない場合は、その後、この機能をオフにするように設定することができますが、ディスク上に保存されたスナップショットは比較的大きくなります。
rdbcompressionのはい

スナップショットが保存された後、我々はまた、使用がデータ検証のためのCRC64のアルゴリズムをRedisの作ることができますが、最大のパフォーマンスを取得したい場合はそうすることが、消費の約10%が、パフォーマンスが向上します、あなたは、この機能をオフにすることができます。
はいrdbchecksum

:我々はまた、デフォルトの設定は、スナップショットファイルの名前を設定することができます
dbfilename dump.rdb

最後に、あなたはまた、スナップショットのファイルストレージへのパスを設定することができます。たとえば、デフォルトの設定では、現在のフォルダは次のとおりです。
DIR ./
[あなたが読むことを教えるRedisの設定-コピー]

Redisのは、マスタ - スレーブ同期機能を提供します。

一つは、IPおよびポートを指定することによって、メインのRedisの位置を特定する構成アイテムを介してサーバから他のRedis Redisのslaveofを制御することができるように。通常の状況下で、我々はRedisのサービスポートからの永続的なサイクルをスナップショット、または別の構成にRedisの異なる周波数を設定することをユーザーにお勧めします、というようになります。

slaveof

プライマリセットは、次に(requirepassセットを使用して)認証パスワードを、Redisの場合、その後のRedisから構成ではそうでない場合は、RedisのにアクセスするメインのRedisからの要求を拒否し、パスワード設定を確認するために使用することがmasterauth。
masterauth

メインのRedisのRedisのから失われた、または進行中のマスター・スレーブ同期に接続すると、それに送られた外部アクセス要求に対処する方法をRedisの?:ここでは、Redisのから2つの選択肢があり
、最初のオプションを:のRedisからスレーブサーブ-古いデータ・セット・はい(デフォルト)は、クライアントに応じて要求を読み書きし続けます。

二番目のオプション:なしにスレーブサーブ-古いデータセットの場合は、クライアントのRedisからの要求から、要求とSLAVEOF INFO要求にする場合、クライアントはもちろん、例外はありますが、「進行中のマスターとのSYNC」を返します。 Redisのは、まだ処理されます。

あなたはRedisのからの書き込み要求を受け入れることができるかどうかを制御することができます。これらの一時的なデータからのマスタ同期が離れてクリアされますので、データはRedisのから直接書き込まれ、一般的に、データのみのものと非常に短いライフサイクルに適用されます。redis2.6バージョンので、Redisのからデフォルトでは読み取り専用です。

スレーブ読み取り専用はい

読み取り専用、直接、信頼できないクライアントに公開さからは適していませんRedisの。リスクを最小限にするためには、直接外部の呼び出しを避けるために、名前を変更するにはいくつかの破壊的なコマンドを有していてもよく、リネーム・コマンド命令を使用することができます。たとえば、次の
名前の変更-コマンドCONFIG b840fc02d524045429941cc15f59e41cb7be6c52

PINGパケットは、メインのRedisのRedisのから定期的に送信されます。あなたはrepl_ping_slave_periodサイクル命令によってそれを制御することができます。デフォルトは10秒です。
REPL-PING-スレーブ期間10

:同期から、タイムアウトが主にこのような状況下で発生するがあり得る
観点でのRedis、大規模1. IO転送から。
データ送信またはPING、タイムアウトメインRedisのビューRedisの点から2.
のRedisからPINGへの応答時に3は、ビューの主点のRedis、Redisのからタイムアウト

ユーザーは、上記制限時間の残業を設定しますが、大きくなるように値REPL-PING-スレーブ期間よりも必ずこの時間を作ることができ、それがメインのRedisのRedisのからそうでない場合は、すべての時間を考えるだろう。

REPLタイムアウト60

私たちは、マスタ・スレーブ同期TCP_NODELAYを無効にするかどうかを制御することができます。TCP_NODELAYを有効にした場合、その主な用途に少ないTCPパケットとRedisのからデータを送信するためのより少ない帯域幅をRedisの。しかし、これは同期遅延の数はおそらく40ミリ秒程度に達するだろう増加する可能性があります。あなたはTCP_NODELAYをオフにした場合、データの同期化遅延が減少しますが、より多くの帯域幅を消費します。(あなたがTCP_NODELAYがわからない場合は、科学が見にここに来ることができます)。
REPL-無効-TCP-NODELAYなし

我々はまた、同期キューの長さを設定することができます。キューの長さ(バックログ)は、メインのRedisはRedisのから送信されるデータをバッファするためのバッファを使用する、から切断時のRedisでのRedisのメインバッファです。Redisのから再接続すると、この場合、総量は、再同期データと、この差分データの一部のみを同期させることができていません。
REPL-バックログサイズの1メガバイト

いくつかの時間の後のような、またはRedisのに接続できない主なRedisのは、その後、キューバッファ内のデータが一掃されます。私たちは、メインのRedisが待機する時間の長さを設定することができます。0に設定すると、クリーンアップされません。デフォルトは1時間です。
REPL-バックログ-TTL 3600

私たちは、仕事の優先度が高いが、メインのRedisのRedisのからアップグレードされます、メインのRedisではない通常の状況を継続し、優先順位設定のRedisから多くを与えることができます。数、より高い優先度を下げます。例えば、メインのRedisのRedisのからの3つがあり、優先順位番号は、その後数はメインRedisの10からアップグレード最初に選択するのRedis、10,100,25でした。優先度が0に設定されている場合、これはRedisのから選択されることはありません。100のデフォルトの優先順位。
スレーブ優先度100

より多くのMプライマリーRedisのより接続遅延はRedisのからN秒よりも大きいが発見された場合、メインストップは受信した書き込み要求を受け入れるのRedis。メインのRedisのRedisのは時間のポイントPINGにすべての最後の髪を記録し、Redisのからのすべての動作を理解することがメインのRedisする一方これは、RedisをRedisをPINGからの主な問題のため、通常毎秒です。
奴隷-へ- 。分3書き込み
最小-最大-LAG-奴隷10

接続が10秒以上のRedisから三つ以上の遅延である場合、もはやRedisのない、上記の例が示すように外部マスタライト要求を受信します。両者の構成は0に設定され、その後、この機能はオフになります。ミン・スレーブ・ツー・書き込みデフォルトは0で、最小-奴隷-maxの遅れは10です。
[構成のRedis読むことを教える-セキュリティ]

我々は最初のRedisサーバ、パスワード検証に要求を送信する前のRedisクライアントを尋ねることができます。あなたが少なく、信頼できるネットワーク環境におけるサーバのRedisとき、私はあなたがこの機能を過ごすことになりますと信じています。Redisのパフォーマンスが非常に高いので、あなたを15万回への第2のアップごとにパスワードの試行を完了することができますので、あなたがより良い十分に複雑なパスワードを設定したいので、それは簡単にハッカーによって亀裂が入ります。

requirepass zhimakaimen

ここでは、に設定したパスワードでrequirepass「オープンセサミ。」
RedisのはRedisのは、誤って実行されるのを避けるために、私たちは、このようなより危険なコマンドの一部として指示、名称の変更のために名前を変更することができます。たとえば、あなたは、非常に複雑な名前にCONFIGコマンドを置くことができ、外部の呼び出しを避けるために、また、内線通話の必要性を満たすために:

名前の変更コマンドCONFIG b840fc02d524045429941cc15f59e41cb7be6c89

:私たちも空の文字列にCONFIG名にあるスワップCONFIGコマンド、無効にすることができ
、リネーム・コマンドCONFIGを「」

しかし、あなたはRedisのと通信するために、データの永続性、またはニーズにAOFのアプローチを使用する場合は、コマンドの名前を変更する。なお、いくつかの問題が発生することがあります。
制限- [Redisの設定を読むことを教えます

私たちは、Redisのを設定することができますし、クライアントの数に接続することができます。デフォルトでは、クライアント万です。あなたは、プロセスのファイルハンドルの制限を設定できない場合Redisのハンドルは独自の内部処理ロジックのためのいくつかのアウトを残しているので、Redisのは、現在のファイルハンドル限界値マイナス32に設定されます。

この制限に達した場合、Redisの新しい接続要求が拒否され、「クライアントの最大数に達した」の問題は、応答する要求当事者に接続されています。

MaxClientsの10000

私たちも、使用済みのRedisのできるメモリの量を設定することができます。メモリ使用量の上限に達すると、Redisのは、内部データを削除しようとするルールがmaxmemoryポリシーで指定することができる削除されます。
メモリ内のデータを削除することができないのRedisは、ルールに従って除去され、あるいは我々が設定した場合は、「削除することはできません、」そのようなSET、LPUSHなどというように命令メモリを適用する必要がある人のためのエラーメッセージを返しますのRedis。しかし、メモリアプリケーションのための命令はまだなGETなどというように正常な応答、できなくなります。

maxmemory

もう一つ注意すべきは、あなたが(状態あなたのRedisはRedisのから持っている)メインのRedisをRedisの場合は、メモリ使用量の上限に設定することで、あなただけの場合セットシステムで脇同期キューバッファのためのいくつかのメモリ空間を設定する必要がありますそれは、「削除されません」され、そして、彼らはこの要因を考慮する必要はありません。
メモリのための規則の除去のために、6つの削除ルールまで提供してRedisの。彼らは以下のとおりです。

1.volatile-LRU:キーのセット使用して古くなったLRUアルゴリズムを削除
キー削除するLRUアルゴリズムを使用して:2.allkeys-LRU
3.volatile-ランダムに:ランダムなセットキーの有効期限取り除く
4.allkeys-ランダムに:Shiftキーをランダムなキーに加えて、
5.volatile-TTL:TTLは、唯一、最近期限が切れたものの鍵であるこれらの最も小さい値のキーを、削除します。
6.noeviction:削除されません。書き込み操作の場合、エラーメッセージを返します。

かかわらず、右キーことなく、除去される上記規則のその次に、書き込み要求のRedisのエラーメッセージが返され、除去することができます。

maxmemoryポリシー揮発性、LRU

LRUアルゴリズムと最小TTLアルゴリズムは、正確なアルゴリズムが、見積もりではありません。だから、サンプルのサイズを設定することができます。Redisのデフォルトは3つのキーをチェックして、LRUのいずれかを選択します場合は、キーサンプルの数を変更することができます。
maxmemory-サンプル3

:最後に、我々は日付現在のバージョン(2.8.4)に、これらの命令は、以下が含まバックアップ式ライトをRedisのことをメッセージに追加する必要が
SET SETNX SETEXアペンド
INCR DECR RPUSH LPUSH rpushx lpushx linsert LSET rpoplpushサッド
シンターsinterstore SUNION sunionstore sdiffのsdiffstore Zaddをzincrby
zunionstore zinterstore HSET hsetnx hmset hincrby incrby decrby
GETSET MSET msetnxソートExecの
[設定を読み込むためのティーチはRedisの-追加モード]

デフォルトでは、Redisのは、非同期でデータをディスクに保持されます。非常に効果的であることが確認されているが、そのような電源障害などの問題のいくつかは、このメカニズムは数分を書き込むための要求の損失につながる可能とき、ほとんどのアプリケーションでこのパターン。

ボーエンの上部が記載されているような、追加のファイル(追加ファイルのみ)は、データの一貫性を維持するための良い方法です。サーバーの電源がオフの場合でも、一つだけ第2の書き込み要求が問題Redisのプロセスがある場合に失われ、オペレーティングシステムが正常に動作して、またはのみ書き込み要求のさえ喪失されています。

私たちは、あなたが、AOF RDBメカニズムとメカニズムが競合せずに同時に使用することができることを示唆しています。データの一貫性を維持する方法については、こちらの記事を参照してください。

appendonlyなし

:我々はまた、AOFファイル名を設定することができます
「appendonly.aof」appendFileName
すぐにディスクに書き込まれた命令キャッシュのオペレーティングシステムに伝えるために、にfsync()の呼び出し。一部のオペレーティングシステム意志「今」、他のオペレーティングシステムが実行される一方、「できるだけ早く。」

Redisのは、3つの異なるモードをサポートしています。

1.no:)(fsyncを呼び出すことはありません。しかし、オペレーティング・システムは、時間の同期を決定できるようにします。このモードでは、パフォーマンスは最速のRedisとなります。
2.always:各書き込み要求された後)(fsyncを呼び出します。このモードでは、Redisのは比較的遅くなりますが、データは安全です。
3.everysec:1秒に1回)(fsyncを呼び出します。これは妥協の性能と安全性です。

デフォルトはeverysecです。シークレット関連データの一貫性は、あなたがこの記事を参照することができます。

appendfsync everysec

fsyncモードは常にまたはeverysecに設定されている場合は、永続的バックグラウンド・プロセスは、ディスクIO操作の多くを実行する必要がある場合にfsync(呼び出されたときに、その後のRedisは動けなくなる場合があります)。それは私たちが別の新しいスレッド(ではfsync実行を行く場合でもので、またライブ同期書き込みコールをブロックされた)、問題を解決するためには至っていません。
BGSAVEまたはBGWRITEAOFのランニングは、主要なプロセスではfsync()の呼び出しがブロックされるとき、この問題を軽減するために、我々は、そう、次の設定項目を使用することができます。私たちは同じ「appendsync none」を設定していない場合は、無効となり、プロセスがファイルAOFを再構築するための別の方法であるとき、永続化機能は、Redisのことをこれが意味。あなたはRedisの遅延の問題がある場合は、yesに次のオプションセットを追加します。これは最も安全な選択肢のデータの整合性であるため、それ以外の場合は、何も残しません。

無appendfsyncオン書き換えなし

私たちは、Redisのは自動的にAOFを書き換えることができます。AOF一定の大きさに成長すると、Redisのは、暗黙的にファイルサイズを小さくするために、ログファイルを書き換えることBGREWRITEAOFを呼び出します。
Redisのは、このように動作します:Redisのは、最後の書き換え時のサイズAOF記録します。発売以来のRedisが書き換えられていない場合は、起動したときに、そのAOFファイルサイズを基準値として使用されます。基準値と現在のAOFサイズ比較。サイズAOF現在の成長は比例セットを超えた場合、書き換えがトリガされます。また、あなたはまた、最小サイズを設定する必要があり、書き換えトリガさAOF防止するためには非常に小さいです。

自動AOF-書き換え割合100
自動AOF書き換え分サイズの64メガバイト

自動AOF-書き換え割合が0の場合、このオーバーライド機能が閉じられます。
[ - LUAスクリプトのRedisの構成読むことを教えます]

厳密にミリ秒単位で、有料の注意を制限する必要がある最大のランニングタイムのluaスクリプト:

制限時間5000を取ります

この値が0または負に設定されている場合、どちらも制限時間が与えられません。
[Redisの設定を読むためにあなたを教える-スローログ]

遅いログは、ログクエリが指定された期間を超えてシステムを指すのRedis。これは、そのようなクライアントとの相互作用としての長いIO操作を含み、応答内容を送信するが、queryコマンドを実行するだけで、実際の時間が含まれていません。

スローログのために、あなたはマイクロ秒で、二つのパラメータ、長い実行時間を設定することができ、他方は遅いログの長さです。新しいコマンドがログに書き込まれると、最も古いものは、コマンドログキューから削除されます。

マイクロ秒単位で、即ち1,000,000 1秒を表します。0は必須レコードのすべてのコマンドを示し、一方、負の遅いログは、無効になっています。

slowlog-ログ遅く-10000

ログのスロー最大長、あなたは簡単に値を埋めることができ、ノートでは、それはメモリを消費することをそこには上限はありませんが、。あなたは、この値をリセットするためにSLOWLOG RESETを使用することができます。
slowlog-MAX-lenを128
[ティーチあなたはRedisの設定を読み込む-イベント通知]

Redisのは、クライアントに特定のイベントの発生を通知することができます。この機能の詳細については、この資料に記載されています。

[構成のRedis読むことを教える - [詳細設定]

設定項目のいくつかの構造についてのハッシュデータ:

ハッシュ-MAX-ziplist-エントリ512
ハッシュ-MAX-ziplist値64

データ構造のリストについては、いくつかの設定項目:
リストエントリそれを-MAX-512-ziplist
一覧-最大値64 ziplist

データ構造のCIのセットの場合:
SET-MAX-エントリそれINTSET-512

設定項目のデータ構造の順序セット:
ZSET ziplist-MAX-128-エントリをそれは
ZSET-最大値64 ziplistを

設定項目の再ハッシュの必要性について:
activerehashingはい

コントロールクライアント上の出力バッファ:
クライアント出力バッファリミットノーマル0 0 0 -
クライアント-出力バッファ-60-制限スレーブ64メガバイト256メガバイト
クライアント出力バッファ-8メガバイト、32MBの制限のPubSub 60

周波数に関連する設定項目:
ヘルツ10

AOF書き換えに関連する設定項目
はいAOF-書き換え増分のfsync

公開された40元の記事 ウォンの賞賛2 ビュー2024

おすすめ

転載: blog.csdn.net/weixin_42155272/article/details/104294932