ABPRedis缓存用起来
官方的解释就是这么拗口,对于初识Redis,我们可以简单把它理解为基于内存的速度非常快性能非常棒的Key-Value数据库。
有一点需要说明,Redis官方仅支持Linux系统不支持Windows系统。
但是呢,微软大法好啊,微软开源技术团队(Microsoft Open Tech group)开发和维护了一个Win64 的版本,我们可以在https://github.com/MSOpenTech/redis上下载Win64版本来玩一玩。
5. 动手试玩Redis
5.1. 安装Redis
打开微软开源技术团队维护的Redis Github链接,找到Releases目录,下载最新版本的msi安装即可。
下载后,一直下一步安装即可。
5.2. 简单试玩
找到安装目录,打开cmd并进入到安装目录,输入redis-server redis.windows.conf
,即可启动Redis 服务。Redis服务默认启动在6379
端口。
再启动一个cmd窗口,执行redis-cli.exe
即可开一个Redis客户端。
执行set
命令进行缓存设置;
执行get
命令进行缓存读取;
执行subscribe
命令进行频道监听;
执行publish
命令向指定频道发布消息;
具体步骤详参下图:
6. ABP上试玩Redis缓存
跟着我的步伐,对Redis也算有了基本的认识,咱们下面就进入今天的压轴主题,介绍Abp下如何使用redis进行缓存。
首先我们要知道为什么要用Redis进行缓存。
默认的缓存管理是在内存中(in-memory)进行缓存。当你有不止一个并发web服务器需要运行同一个应用程序,默认的缓存管理就不满足你的需求。你可能需要一个分布式/中央缓存服务器来进行缓存管理,这时Redis就可以粉墨登场了。
6.1. Abp集成Redis
首先打开Web层,下载Abp.RedisCache Nuget包安装。
其中要说明的是Abp.RedisCache是依赖StackExchange.RedisNuget包的。
修改XxxWebModule.cs
,在DependsOn特性上添加对AbpRedisCacheModule
的依赖,并在模块的PreInitialize
方法中调用UseRedis
扩展方法,代码如下:
[DependsOn(
typeof(LearningMpaAbpDataModule),
typeof(LearningMpaAbpApplicationModule),
typeof(LearningMpaAbpWebApiModule),
typeof(AbpWebSignalRModule),
//typeof(AbpHangfireModule), - ENABLE TO USE HANGFIRE INSTEAD OF DEFAULT JOB MANAGER
typeof(AbpWebMvcModule),
typeof(AbpRedisCacheModule))]
public >LearningMpaAbpWebModule : AbpModule
{
public override void PreInitialize()
{
//省略其他配置代码
//配置使用Redis缓存
Configuration.Caching.UseRedis();
//配置所有Cache的默认过期时间为2小时
Configuration.Caching.ConpAll(cache =>
{
cache.DefaultSlidingExpireTime = TimeSpan.FromHours(2);
});
//配置指定的Cache过期时间为10分钟
Configuration.Caching.Conp("ControllerCache", cache =>
{
cache.DefaultSlidingExpireTime = TimeSpan.FromMinutes(10);
});
}
....
}
最后一步在Web.Config文件的【connectionStrings】节点为Abp.Redis.Cache
添加连接字符串,如下:
<connectionStrings>
<add name="Default" connectionString="Server=.\sqlexpress; Database=LearningMpaAbp; Trusted_Connection=True;" providerName="System.Data.SqlClient" />
<add name="Abp.Redis.Cache" connectionString="localhost"/>
</connectionStrings>
启动Redis Server后,F5运行web项目,断点调试,发现已经成功应用Redis缓存。
若未启动Redis Server,会报Error:It was not possible to connect to the redis server(s); to create a disconnected multiplexer, disable AbortOnConnectFail. SocketFailure on PING
这样我们就用Redis
代替了默认的MemoryCache
缓存方案,而不需要改动其它代码,Abp就是这么简单、灵活、松藕合!
7. 总结
这篇文章中主要梳理了Abp中如何进行缓存管理,并简要介绍了Abp中的缓存机制,并与Asp.net mvc自带的[Outputcache]缓存进行简要对比,并进行了缓存管理实战演练。最后对Redis进行了简要介绍,并介绍了如何切换Redis缓存。