上文详细测试了每次都读取数据库的接口和通过缓存读取接口的性能对比
这里我们就准备实际简介肿么将原来的数据库加上Redis缓存优化部分接口
1.下载Redis和Redis视图管理工具
点击下载 提取码: 9tgg 备用下载地址
下载完成后先安装Redis再安装Redis视图管理工具
打开后入下图所示
安装好必要软件后我们就开始软件上的改动
首先需要给项目添加 StackExchange.Redis.dll引用
这个文件你可以在Nuget上下载也可以在用我下面提供的版本
如果使用nuget右键项目管理nuget程序包,然后选中右上角的浏览
在搜索框中输入Redis搜索后找到 StackExchange.Redis
请注意查看下方有版本依赖需求的因为我的mvc是依赖于.netFramwork4.5的所以我这里选择了一个版本相对较低的1.1.608来安装
当然你也可以使用下载dll通过右键添加-引用方式来添加dll
点击下载 提取码: jcs1 备用下载地址
添加所需的dll过后我们需要添加RedisHelper来简便我们的操作
将我的RedisHelper复制至项目
点击下载 提取码: u25p 备用下载地址
请注意复制后请修改namespace为你的项目namespace地址,如果dll引用没有请添加对应引用
由于helper里写了读取web.confg数据库连接地址里面的地址
所以请在web.config添加如下代码
<connectionStrings><add name="RedisExchangeHosts" connectionString="127.0.0.1:6379,allowadmin=true"/></connectionStrings>
添加完成后基本就完成了对Redis的引用了
下面就可以在你的控制器里面添加Redis的代码了
RedisHelper redis = new RedisHelper(1);
这个是初始化Redis,1代表连接第2个数据库,如果给为0的话就是连接第一个数据库
使用代码如下所示:
using (MiniProfiler.Current.Step("开始加载数据:")){try{//判断是否走缓存加载全场折扣if (redis.StringGet<AllDiscount>("AllDiscount" + shopid) != null){MiniProfiler.Current.Step("从Redis服务器中加载数据:");allDiscount = redis.StringGet<AllDiscount>("AllDiscount" + shopid);}else{MiniProfiler.Current.Step("从MSSQL服务器中加载数据:");allDiscount = ds.GetModel<AllDiscount>(m => m.Entid == shopid && m.Isopen == true && m.StartDate <= now && m.EndDate >= now);redis.StringSet<AllDiscount>("AllDiscount" + shopid, allDiscount, TimeSpan.FromHours(2));}}catch (Exception e){MiniProfiler.Current.CustomTiming("Errors:", "Redis服务未启用,请开启该服务,并且请注意端口号,本项目使用的的6319,而且我的是没有设置密码。" + e.Message);allDiscount = ds.GetModel<AllDiscount>(m => m.Entid == shopid && m.Isopen == true && m.StartDate <= now && m.EndDate >= now);}}
在学习Redis和写本文中大量参考了https://www.cnblogs.com/cang12138/p/8884362.html 这篇博主的博文,如果看完本文看玩还不懂的话建议再去看看此文,同时欢迎加博主的QQ:864015769 进行讨论,虽然博主也是一个小菜鸡(叫我时请备注一下CSDN看到的不然博主可能会不同意)