StackExchange.Redis公式ドキュメント(二)Configuration
6558 ワード
コンフィギュレーション
redis、StackExchangeを構成する方法はいくつかあります.Redisは、
ここでの 構成データを含む文字列 後者は基本的に前者の文字列形式である
基本的な構成文字列
最も簡単な例は、ホスト名のみを含むことです.
これにより、ローカルマシンにデフォルトポート(6379)を使用して配備された単一サーバにリンクされます.残りの構成オプションは、後に続く(カンマで区切る)だけです.ポートは通常、セミコロン(
or:
基本的な構成は文字列に保存されますが、実行時に特殊な構成が適用されます.
パスワード付きMicrosoftAzure Redisの例:
構成オプション
Configuration string
Meaning
abortConnect={bool}
trueの場合、
allowAdmin={bool}
リスクと認定されたコマンドの有効化
channelPrefix={string}
すべてのパブリケーションサブスクリプションチャンネルのプレフィックス
connectRetry={int}
初期化
connectTimeout={int}
リンクタイムアウト時間(ms)
configChannel={string}
構成変更情報を伝達するためのブロードキャストチャネル
defaultDatabase={int}
デフォルトのデータベース・シーケンス数、1~1
keepAlive={int}
SOcketsのオンライン間隔を維持するために情報を送信
name={string}
redis内で異なるリンククライアントを判別するために使用
password={string}
パスワード
proxy={proxy type}
エージェントタイプ(あれば);例えば「twemproxy」
resolveDns={bool}
DNS解析サーバを指定し、デフォルトではなく明確な指摘を推奨します.
serviceName={string}
現在実装されていません(sentinelモード用)
ssl={bool}
SSL暗号化の使用
sslHost={string}
サーバ証明書にSSLホストIDを登録する
syncTimeout={int}
同期操作のタイムアウト時間(ms)
tiebreaker={string}
マルチホストサーバの導入状況でmasterサービスを選択するためのKey
version={string}
Redisバージョン(サーバからこの情報を取得できない場合)
writeBuffer={int}
出力キャッシュサイズ
構成文字列のTokenはカンマで区切られています.
自動構成と手動構成
通常のシナリオではStackExchange.Redisでは、サーバタイプとバージョン、リンクタイムアウト時間、プライマリ・スレーブ関係など、多くの設定が自動的に構成されます.ただし、これらのコマンドはredisサーバによって無効化される場合があります.この場合、これらの情報を提供する必要があります.
または、次の文字列を使用します.
コマンド名
redisには、個別のコマンドを無効にしたり名前を変更したりする非常用機能があります.これまでの各例では、この機能は
文字列形式:
Twemproxy
Twemproxyは、複数のサーバを1つのサーバと見なすことができるツールであり、共有とフォールトトレランス能力を備えています(これはredis clusterと似ていますが、実装方法は異なります).Twemproxyで使える機能は簡略化されています.手動構成を回避するには、
Tiebreakersと構成変更公告
通常の状況ではRedisは主従ノードを自動的に判別する.しかし、redis-sentinelやredis clusterのような管理ツールを使用していない場合は、複数のmasterノードがある場合に遭遇する可能性があります(たとえば、メンテナンス時にノードをリセットし、ネットワークではmasterとして表現されます).それを解決するためにRedisはtie-breakerの概念を使用しています.彼は複数のmasterを検出したときだけ使用します.(redis clusterを含まない場合、redis clusterは複数のmasterが必要であるため).BookSleeveと互換性を持つために、デフォルトのkeyは
同様に、構成が変更された場合(特にmaster/slave構成)、リンクされたインスタンスに新しい環境(
この2つのオプションは、
これらの設定は、
原文住所:StackExchange.Redisの大部分は意訳ですが、不適切な場合は訂正してください.
転載先:https://www.cnblogs.com/ArvinZhao/p/6007043.html
redis、StackExchangeを構成する方法はいくつかあります.Redisは、
Connect
(or ConnectAsync
)を実行するときに呼び出される豊富な構成モデルを提供します.var conn = ConnectionMultiplexer.Connect(configuration);
ここでの
configuration
は、次のタイプのいずれかです.ConfigurationOptions
例基本的な構成文字列
最も簡単な例は、ホスト名のみを含むことです.
var conn = ConnectionMultiplexer.Connect("localhost");
これにより、ローカルマシンにデフォルトポート(6379)を使用して配備された単一サーバにリンクされます.残りの構成オプションは、後に続く(カンマで区切る)だけです.ポートは通常、セミコロン(
:
)で区切られています.コンフィギュレーションオプションは、名前の後ろに=
があります.例:var conn = ConnectionMultiplexer.Connect("redis0:6380,redis1:6380,allowAdmin=true");
string
とConfigurationOptions
のマッピングについては、以下に詳細な概要を示します.これらのマッピングは、次のように相互に変換できます.ConfigurationOptions options = ConfigurationOptions.Parse(configString);
or:
string configString = options.ToString();
基本的な構成は文字列に保存されますが、実行時に特殊な構成が適用されます.
string configString = GetRedisConfiguration();
var options = ConfigurationOptions.Parse(configString);
options.ClientName = GetAppName(); //
options.AllowAdmin = true;
conn = ConnectionMultiplexer.Connect(options);
パスワード付きMicrosoftAzure Redisの例:
var conn = ConnectionMultiplexer.Connect("contoso5.redis.cache.windows.net,ssl=true,password=...");
構成オプション
ConfigurationOptions
オブジェクトには多くの属性があり、変換時に自動的に判断されます.次に、一般的な構成を示します.Configuration string
ConfigurationOptions
Meaning
abortConnect={bool}
AbortOnConnectFail
trueの場合、
Connect
メソッドは有効なサーバにリンクされていないときにリンクインスタンスを作成しません.allowAdmin={bool}
AllowAdmin
リスクと認定されたコマンドの有効化
channelPrefix={string}
ChannelPrefix
すべてのパブリケーションサブスクリプションチャンネルのプレフィックス
connectRetry={int}
ConnectRetry
初期化
Connect
に失敗したときにリンクを再試行した回数connectTimeout={int}
ConnectTimeout
リンクタイムアウト時間(ms)
configChannel={string}
ConfigurationChannel
構成変更情報を伝達するためのブロードキャストチャネル
defaultDatabase={int}
DefaultDatabase
デフォルトのデータベース・シーケンス数、1~1
keepAlive={int}
KeepAlive
SOcketsのオンライン間隔を維持するために情報を送信
name={string}
ClientName
redis内で異なるリンククライアントを判別するために使用
password={string}
Password
パスワード
proxy={proxy type}
Proxy
エージェントタイプ(あれば);例えば「twemproxy」
resolveDns={bool}
ResolveDns
DNS解析サーバを指定し、デフォルトではなく明確な指摘を推奨します.
serviceName={string}
ServiceName
現在実装されていません(sentinelモード用)
ssl={bool}
Ssl
SSL暗号化の使用
sslHost={string}
SslHost
サーバ証明書にSSLホストIDを登録する
syncTimeout={int}
SyncTimeout
同期操作のタイムアウト時間(ms)
tiebreaker={string}
TieBreaker
マルチホストサーバの導入状況でmasterサービスを選択するためのKey
version={string}
DefaultVersion
Redisバージョン(サーバからこの情報を取得できない場合)
writeBuffer={int}
WriteBuffer
出力キャッシュサイズ
構成文字列のTokenはカンマで区切られています.
=
シンボルを持たないTokenは、サーバノードとみなされます.ノード情報は、sslが使用されていない場合、ポート番号がデフォルトで6379になり、sslが有効である場合、デフォルトで6380になります.Tokenでは、$
で始まると、コマンドマッピング情報、例えば、$config=cfg
であることを示す.自動構成と手動構成
通常のシナリオではStackExchange.Redisでは、サーバタイプとバージョン、リンクタイムアウト時間、プライマリ・スレーブ関係など、多くの設定が自動的に構成されます.ただし、これらのコマンドはredisサーバによって無効化される場合があります.この場合、これらの情報を提供する必要があります.
ConfigurationOptions config = new ConfigurationOptions
{
EndPoints =
{
{ "redis0", 6379 },
{ "redis1", 6380 }
},
CommandMap = CommandMap.Create(new HashSet
{ // EXCLUDE a few commands
"INFO", "CONFIG", "CLUSTER",
"PING", "ECHO", "CLIENT"
}, available: false),
KeepAlive = 180,
DefaultVersion = new Version(2, 8, 8),
Password = "changeme"
};
または、次の文字列を使用します.
redis0:6379,redis1:6380,keepAlive=180,version=2.8.8,$CLIENT=,$CLUSTER=,$CONFIG=,$ECHO=,$INFO=,$PING=
コマンド名
redisには、個別のコマンドを無効にしたり名前を変更したりする非常用機能があります.これまでの各例では、この機能は
CommandMap
によって動作していたが、伝達パラメータHashSet
またはCreate()
の形式(どのコマンドが使用可能であるかを明確に示す)ではなく、Dictionary
の形式を採用していた.この辞書に含まれるすべてのコマンドは有効と仮定され、名前は変更されていません.null
または空の文字列は、コマンドが無効になっていることを示します.たとえば、次のようにします.var commands = new Dictionary {
{ "info", null }, // disabled
{ "select", "use" }, // renamed to SQL equivalent for some reason
};
var options = new ConfigurationOptions {
// ...
CommandMap = CommandMap.Create(commands),
// ...
}
文字列形式:
$INFO=,$SELECT=use
Twemproxy
Twemproxyは、複数のサーバを1つのサーバと見なすことができるツールであり、共有とフォールトトレランス能力を備えています(これはredis clusterと似ていますが、実装方法は異なります).Twemproxyで使える機能は簡略化されています.手動構成を回避するには、
Proxy
の構成項目を使用します.var options = new ConfigurationOptions
{
EndPoints = { "my-server" },
Proxy = Proxy.Twemproxy
};
Tiebreakersと構成変更公告
通常の状況ではRedisは主従ノードを自動的に判別する.しかし、redis-sentinelやredis clusterのような管理ツールを使用していない場合は、複数のmasterノードがある場合に遭遇する可能性があります(たとえば、メンテナンス時にノードをリセットし、ネットワークではmasterとして表現されます).それを解決するためにRedisはtie-breakerの概念を使用しています.彼は複数のmasterを検出したときだけ使用します.(redis clusterを含まない場合、redis clusterは複数のmasterが必要であるため).BookSleeveと互換性を持つために、デフォルトのkeyは
"__Booksleeve_TieBreak"
(0番データベースのみ)です.彼は原始的な投票メカニズムでより適用可能なmasterを判断している.(so that work is routed correctly.) 同様に、構成が変更された場合(特にmaster/slave構成)、リンクされたインスタンスに新しい環境(
INFO
、CONFIG
などで使用可能なコマンド)を知らせることが重要である.StackExchagnge.Redistは、これらの通知を送信するために使用されるpub/subチャネルを自動的に購読する.BookSleeveと互換性を持つため、チャネル名のデフォルトは"__Booksleeve_MasterChanged"
です.この2つのオプションは、
.ConfigurationChannel
および.TieBreaker
の構成プロパティによってカスタマイズまたは無効化できます(""
に設定されています).これらの設定は、
IServer.MakeMaster()
メソッドによって使用され、データベース内のtie-breakerおよびブロードキャスト構成変更メッセージを設定することもできる.master/slaveが変化する構成情報についても、ConnectionMultiplexer.PublishReconfigure
メソッドにより、すべてのノードに構成のリフレッシュを要求することができる.原文住所:StackExchange.Redisの大部分は意訳ですが、不適切な場合は訂正してください.
転載先:https://www.cnblogs.com/ArvinZhao/p/6007043.html