redis mysql 封裝 Redis簡單封裝

2021-10-21 08:05:27 字數 3083 閱讀 7052

本次封裝redis應用,用的是免費的servicestack,通過nuget查詢應用,該demo需要特別應用的還有newtonsoft.json、unity,均是最新版本便可

demo通過redis資料庫提供者(rediscachedatabaseprovider),redis配置類(rediscacheoptions),redis基本功能類(rediscachebase),這裡的rediscacheoptions歸屬配置,我這裡將它寫成靜態類。

該類是redis資料庫配置,像連線資料庫字串,特定字元字首,因為redis可以做到分布式,所以不同的redis端,用不同的字首名,還有要連線的資料庫編號,預設0-16

連線資料庫字串

private static stringgetdefaultconnectionstring()

returnconnstr.connectionstring;

特定字首名

private static stringgetredissyscustomkey()

returnredissyscustomkey;

連線資料庫編號

private static intgetdefaultdatabaseid()

returndatabaseid;

irediscachedatabaseprovider

因為這裡簡單用到ioc,所以新增irediscachedatabaseprovider介面,裡面提供getinstance()與getdatabase()兩個方法

此類對外開放getinstance和getdatabase兩個方法,其中getinstance返回的例項做到了單例,返回connectionmultiplexer型別資料(連線資料庫例項);getdatabase返回連線的資料庫,基於此開始做一些具體操作。

在建構函式中延遲建立connectionmultiplexer類,rediscacheoptions.connectionstring取得連線資料庫字串

publicrediscachedatabaseprovider()

_connectionmultiplexer= new lazy(createconnectionmultiplexer);

}privateconnectionmultiplexer createconnectionmultiplexer()

publicconnectionmultiplexer getinstance()

return_instance;

獲取connectionmultiplexer類

privateconnectionmultiplexer getconnectionmultiplexer()

this._disposed = true;

}public voiddispose()

dispose(true);

gc.suppressfinalize(this);

以上便是基本的redis操作的公共部分,以下舉乙個存放key-value格式的資料,用rediscachestringservice實現

rediscachestringservice

該類繼承rediscachebase基類,建構函式傳入irediscachedatabaseprovider型別資料,以簡單的存入key-value,通過key獲取value值,讓key自增為例

存入key-value值

public bool stringset(string key, string value, timespan? expiry = default(timespan?))

key=addsyscustomkey(key);return base.redis.stringset(key, value, expiry);

通過key獲取value值

public string stringget(stringkey)

key=addsyscustomkey(key);return base.redis.stringget(key);

讓key對應的值自增

public double stringincrement(string key, double val = 1)

key=addsyscustomkey(key);return base.redis.stringincrement(key, val);

具體操作

iunitycontainer container = newunitycontainer();

container.registertype();

irediscachedatabaseprovider rediscachedatabaseprovider= container.resolve();using (rediscachestringservice service=newrediscachestringservice(rediscachedatabaseprovider))

service.keyfulsh();

service.stringset("age123", 55);var f= service.redistransaction(x =>);if(f)

console.writeline(service.stringget("sunqiang"));

console.writeline(service.stringget("age"));

通過unity容器,構造出我們想要的rediscachedatabaseprovider

以上便是demo的大概過程,這裡有專門的redis資料庫配置類,專門提供redis資料例項類,還有redis功能操作的基類,分工明確,這個demo其實還可以再改進一些,比如,在構造rediscachestringservice類時,不必明式依賴rediscachedatabaseprovider,在rediscachestringservice類裡面明確依賴,不必反映到此類的外面。

redis訪問,redis mysql操作

1,存字串 name name value 張三 cache.setex name,30,value aa cache.get name print aa.decode 2.刪除某個key key user 1 cache.delete key 3,從sql取出,存入redis,並讀取 rds re...

redis mysql快取機制 Redis快取機制

redis介紹 redis是一款記憶體快取記憶體資料庫 資料模型為 key value,非關係型資料庫使用的儲存資料的格式 可持久化 將記憶體資料在寫入之後按照一定格式儲存在磁碟檔案中,宕機 斷電後可以重啟redis時讀取磁碟中檔案恢復快取資料 分布式 當前任務被多個節點切分處理,叫做分布式處理乙個...

Redis MySQL冷熱資料交換

場景 某 需要對其專案做乙個投票系統,投票專案上線後一小時之內預計有100萬使用者進行投票,希望使用者投票完就能看到實時的投票情況 這個場景可以使用redis mysql冷熱資料交換來解決。何為冷熱資料交換?冷資料 之前使用的資料,熱資料 當前使用的資料。交換 將redis中的資料週期的儲存到mys...