StackExchange.Redis 使用-同步 異步 即發即棄 (三)


訪問單個服務器

有時候需要為單個服務器指定特定的命令 。

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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM