日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

StackExchange.Redis 使用 (一)

發(fā)布時間:2023/12/9 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 StackExchange.Redis 使用 (一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?


在StackExchange.Redis中最重要的對象是ConnectionMultiplexer類, 它存在于StackExchange.Redis命名空間中。
這個類隱藏了Redis服務的操作細節(jié),ConnectionMultiplexer類做了很多東西, 在所有調(diào)用之間它被設計為共享和重用的。
不應該為每一個操作都創(chuàng)建一個ConnectionMultiplexer 。 ConnectionMultiplexer是線程安全的 , 推薦使用下面的方法。
在所有后續(xù)示例中 , 都假定你已經(jīng)實例化好了一個ConnectionMultiplexer類,它將會一直被重用 ,
現(xiàn)在我們來創(chuàng)建一個ConnectionMultiplexer實例。它是通過ConnectionMultiplexer.Connect 或者 ConnectionMultiplexer.ConnectAsync,
傳遞一個連接字符串或者一個ConfigurationOptions 對象來創(chuàng)建的。
連接字符串可以是以逗號分割的多個服務的節(jié)點, 我們僅僅需要連接一個在本地計算機中的redis服務,redis服務的默認端口是6379.

using StackExchange.Redis;
...
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
// ^^^ store and re-use this!!!

注意 : ConnectionMultiplexer 實現(xiàn)了IDisposable接口當我們不再需要是可以將其釋放的 , 這里我故意不使用 using 來釋放他。 簡單來講創(chuàng)建一個ConnectionMultiplexer是十分昂貴的 , 一個好的主意是我們一直重用一個ConnectionMultiplexer對象。
一個復雜的的場景中可能包含有主從復制 , 對于這種情況,只需要指定所有地址在連接字符串中(它將會自動識別出主服務器)
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,server2:6379");

假設這里找到了兩臺主服務器,將會對兩臺服務進行裁決選出一臺作為主服務器來解決這個問題 , 這種情況是非常罕見的 ,我們也應該避免這種情況的發(fā)生。


現(xiàn)在你已經(jīng)擁有了一個 ConnectionMultiplexer , 下面三件事情可能是你想要做的。

1. 訪問數(shù)據(jù)庫。(注意在使用集群的情況下,一個數(shù)據(jù)庫可能會分部在多個節(jié)點中)
2. 使用redis的發(fā)布訂閱功能
3. 維護和監(jiān)控一臺服務器

訪問數(shù)據(jù)庫
訪問數(shù)據(jù)庫的操作非常簡單:

IDatabase db = redis.GetDatabase();

GetDatabase 返回一個IDatabase接口。 注意 redis允許配置多個數(shù)據(jù)庫,可以在調(diào)用GetDatabase() 時候指定數(shù)據(jù)庫.另外,如果你計劃使用異步的api , Task.AsyncState 必須擁有一個值 ,也可以這樣指定。

int databaseNumber = ...
object asyncState = ...
IDatabase db = redis.GetDatabase(databaseNumber, asyncState);

現(xiàn)在你已經(jīng)擁有了一個 IDatabase 對象 , 他可以對redis數(shù)據(jù)庫進行操作。所有的方法都有同步和異步兩個版本 , 按照微軟的命名約定 ,所有的異步方法都以Async結尾。

最簡單的操作 存儲和獲取一個值 。

string value = "abcdefg";
db.StringSet("mykey", value);
...
string value = db.StringGet("mykey");
Console.WriteLine(value); // writes: "abcdefg"

String前綴這里代表的是Redis中的String類型 , 和.net中的String類型有很大的區(qū)別 , 盡管兩者都可以保存字符串類型。然后 ,Redis允許鍵值為二進制數(shù)據(jù) , 示例如下:

byte[] key = ..., value = ...;
db.StringSet(key, value);
...
byte[] value = db.StringGet(key);

StackExchange.Redis 支持所有的 redis shell命令, 具體可以參考redis官網(wǎng)。


?

轉(zhuǎn)載于:https://www.cnblogs.com/deosky/p/4846111.html

總結

以上是生活随笔為你收集整理的StackExchange.Redis 使用 (一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。