首页 .Net ABPRedis缓存用起来

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端口。

启动Redis Server

再启动一个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缓存。

特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。