本次封装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类里面明确依赖,不必反映到此类的外面。
閱讀更多 七音說 的文章