StackExchange.Redis 使用-配置 (四)

來源:互聯網
上載者:User

標籤:

Configuration
redis有很多不同的方法來配置連接字串 , StackExchange.Redis 提供了一個豐富的配置模型,當調用Connect 或者 ConnectAsync 時需要傳入。

var conn = ConnectionMultiplexer.Connect(configuration);

這裡的 configuration 參數可以是:
1. 一個 ConfigurationOptions 執行個體
2. 一個字串

第二種方式從根本上來說也是ConfigurationOptions。


通過字串配置串連

最簡單的配置方式只需要一個主機名稱

var conn = ConnectionMultiplexer.Connect("localhost");

它將會串連到本地的redis伺服器 , 預設6379連接埠 ,多個串連通過逗號分割 。 其他選項在名稱的後麵包含了一個 “= ”。 例如
var conn = ConnectionMultiplexer.Connect("redis0:6380,redis1:6380,allowAdmin=true");

可以將一個字串轉換為ConfigurationOptions 或者 將一個ConfigurationOptions轉換為字串 。
ConfigurationOptions options = ConfigurationOptions.Parse(configString);
OR
string configString = options.ToString();

推薦的用法是將基礎資訊儲存在一個字串中,然後在運行是通過ConfigurationOptions改變其他資訊。
string configString = GetRedisConfiguration();
var options = ConfigurationOptions.Parse(configString);
options.ClientName = GetAppName(); // only known at runtime
options.AllowAdmin = true;
conn = ConnectionMultiplexer.Connect(options);

也可以指定密碼
var conn = ConnectionMultiplexer.Connect("contoso5.redis.cache.windows.net,ssl=true,password=...");

 

配置選項
ConfigurationOptions 包含大量的配置選項,一些常用的配置如下:

abortConnect : 當為true時,當沒有可用的伺服器時則不會建立一個串連
allowAdmin : 當為true時 ,可以使用一些被認為危險的命令
channelPrefix:所有pub/sub渠道的首碼
connectRetry :重試串連的次數
connectTimeout:逾時時間
configChannel: Broadcast channel name for communicating configuration changes
defaultDatabase : 預設0到-1
keepAlive : 儲存x秒的活動串連
name:ClientName
password:password
proxy:代理 比如 twemproxy
resolveDns : 指定dns解析
serviceName : Not currently implemented (intended for use with sentinel)
ssl={bool} : 使用sll加密
sslHost={string} : 強制服務器使用特定的ssl標識
syncTimeout={int} : 非同步逾時時間
tiebreaker={string}:Key to use for selecting a server in an ambiguous master scenario
version={string} : Redis version level (useful when the server does not make this available)
writeBuffer={int} : 輸出緩衝區的大小

各配置項用逗號分割


自動和手動設定
在大部分的情況下StackExchange.Redis 會自動的幫我們配置很多選項。 比如 伺服器類型,版本, 逾時時間 , 主從伺服器等..
儘管如此,有時候我們需要在伺服器上面排除一些命令, 這種情況下有必要提供更多資訊
ConfigurationOptions config = new ConfigurationOptions
{
EndPoints =
{
{ "redis0", 6379 },
{ "redis1", 6380 }
},
CommandMap = CommandMap.Create(new HashSet<string>
{ // 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=

重新命名命令
你可以禁用或者重新命名一個命令。 按照前面的樣本這是通過 CommandMap 來完成的,不過上面使用Create( new HashSet<string> )來進行配置,我們使用Dictionary<string,string>。設定null時代表禁用該命令


var commands = new Dictionary<string,string> {
{ "info", null }, // disabled
{ "select", "use" }, // renamed to SQL equivalent for some reason
};
var options = new ConfigurationOptions {
// ...
CommandMap = CommandMap.Create(commands),
// ...
}

也可以使用下面的字串來設定:

$INFO=,$SELECT=use

StackExchange.Redis 使用-配置 (四)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.