C sharp Redis簡單應用

本次封裝Redis應用,用的是免費的ServiceStack,通過NuGet查找應用,該Demo需要特別應用的還有Newtonsoft.Json、Unity,均是最新版本便可。

Demo通過Redis數據庫提供者(RedisCacheDatabaseProvider),Redis配置類(RedisCacheOptions),Redis基本功能類(RedisCacheBase),這裡的RedisCacheOptions歸屬配置,我這裡將它寫成靜態類。

RedisCacheOptions

該類是Redis數據庫配置,像連接數據庫字符串,特定字符前綴,因為Redis可以做到分佈式,所以不同的Redis端用不同的前綴名,還有要連接的數據庫編號,默認0-16

連接數據庫字符串

特定前綴名

連接數據庫編號

IRedisCacheDatabaseProvider

因為這裡簡單用到IOC,所以新增IRedisCacheDatabaseProvider接口,裡面提供GetInstance()與GetDatabase()兩個方法

RedisCacheDatabaseProvider

此類對外開放GetInstance和GetDatabase兩個方法,其中GetInstance返回的實例做到了單例,返回ConnectionMultiplexer類型數據(連接數據庫實例);GetDatabase返回連接的數據庫,基於此開始做一些具體操作。

在構造函數中延遲創建ConnectionMultiplexer類,RedisCacheOptions.ConnectionString取得連接數據庫字符串

單例模式獲取ConnectionMultiplexer

獲取ConnectionMultiplexer類

根據配置獲取數據庫

RedisCacheBase

RedisCacheBase主要作為具體操作Redisd的基類,該類繼承IDisposable接口,用於using自動銷燬連接,在構造函數里面準備好數據庫連接實例以及通過該實例連接的數據庫

Redis支持一些簡單的事務,下面的方法可以執行一組命令

釋放數據庫連接

以上便是基本的Redis操作的公共部分,以下舉一個存放Key-value格式的數據,用RedisCacheStringService實現

RedisCacheStringService

該類繼承RedisCacheBase基類,構造函數傳入IRedisCacheDatabaseProvider類型數據,以簡單的存入key-value,通過key獲取value值,讓key自增為例

存入key-value值

通過key獲取value值

讓key對應的值自增

實現Redis操作

通過Unity容器,構造出我們想要的RedisCacheDatabaseProvider

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