訪問單個服務器
有時候需要為單個服務器指定特定的命令 。
IServer server = redis.GetServer("localhost", 6379);
GetServer方法會接收一個EndPoint類或者一個唯一標識一台服務器的鍵值對。GetServer 方法返回一個IServer對象。 方法也可以是異步的只需要傳入一個async-state
可以使用如下方法獲取所有可用的終結點:
EndPoint[] endpoints = redis.GetEndPoints();
使用IServer可以使用所有的shell命令,比如:
DateTime lastSave = server.LastSave();
ClientInfo[] clients = server.ClientList();
如果報錯在連接字符串后加 ,allowAdmin=true;
同步 、異步、即發即棄
這是StackExchange.Redis的三種主要使用機制:
同步-在方法返回之前阻塞調用方(雖然會阻塞調用方,但絕不會阻塞其他線程 ,StackExchange.Redis中的關鍵點是共享調用者之間的連接)
異步-在未來的某個時間點操作完成,會立刻返回一個 Task 或者 Task<T> : 之后可以調用
.Wait() 阻塞當前線程,直到處理完成。
ContinueWith 添加一個回調函數
使用 await 這是一個高級特性簡化了操作
即發即棄-
在上面的示例中已經演示同步調用的方法 。
異步調用:
string value = "abcdefg";
await db.StringSetAsync("mykey", value);
...
string value = await db.StringGetAsync("mykey");
Console.WriteLine(value); // writes: "abcdefg"
即發即棄:通過配置 CommandFlags 來實現即發即棄功能,在該實例中該方法會立即返回,如果是string則返回null 如果是int則返回0.這個操作將會繼續在后台運行,一個典型的用法頁面計數器的實現:
db.StringIncrement(pageKey, flags: CommandFlags.FireAndForget);