ABP从入门到精通(3):aspnet-zero-core 使用Redis缓存
2021-06-16 01:02
Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。Redis提供了5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上:Redis的数据结构致力于帮助用户解决问题,而不会像其他数据库那样,要求用户扭曲问题来适应数据库。除此之外,通过复制、持久化(persistence)和客户端分片(client-side sharding)等特性,用户可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。
使用Redis可以极大的提升我们应用程序的性能,比如一个小说网站,需要显示阅读量排名前10的小说,如果每次都要去从数据库查询就太耗费数据库性能了,也会增加我们的响应时间。我们可以将这个列表放在redis里面,这样每次就可以从redis里面取数据量,速度是非常快的。
三.aspnet-zero-core 如何使用Redis缓存
项目“MyCompanyName.MyProject.Web.Core” 以下简称“Web.Core”
项目“MyCompanyName.MyProject.Web.Mvc” 以下简称“Web.Mvc”
使用Redis缓存,请先通过nuget安装包 Abp.RedisCache
1.打开项目“Web.Core” 的“AbpZeroTemplateWebCoreModule.cs” 在“PreInitialize”方法里
1 Configuration.Caching.UseRedis(options => 2 { 3 options.ConnectionString = _appConfiguration["Abp:RedisCache:ConnectionString"]; 4 options.DatabaseId = _appConfiguration.GetValueint>("Abp:RedisCache:DatabaseId"); 5 });
2.修改redis配置 配置文件在项目“Web.Mvc”里 appsettings.json
这里说一下DatabaseId,及Redis数据库ID,不同的数据库ID有助于在同一服务器中创建不同的密钥空间(隔离缓存)。
3.设置默认过期时间,同样是在 项目“Web.Core” 的“AbpZeroTemplateWebCoreModule.cs” 在“PreInitialize”方法里,放在redis代码之前
1 //设置所有缓存的默认过期时间 2 Configuration.Caching.ConfigureAll( cache => 3 { 4 cache.DefaultAbsoluteExpireTime = TimeSpan.FromMinutes(2); 5 }); 6 //设置某个缓存的默认过期时间 根据 "CacheName" 来区分 7 Configuration.Caching.Configure("CacheName", cache => 8 { 9 cache.DefaultAbsoluteExpireTime = TimeSpan.FromMinutes(2); 10 });
4. 最后不要忘了设置模块依赖
四.验证是否设置成功
启动运行项目,查看redis里是否有数据。这里我是用的是redisdesktopmanager,下载地址:https://redisdesktop.com/download
很明显的看出已经使用成功了。
五.如何在代码中使用缓存
1.通过容器注入缓存管理器,这里可以使用属性注入或者构造方法注入均可
2.使用缓存
这里Get方法有两个参数,第一个参数是缓存中的key,第二个参数是当缓存中数据不存在,那么执行获取数据的方法。
思考:我们都知道Redis是跨进程甚至跨域的缓存,有时候我们没必要使用Redis缓存,使用本机缓存就够,我想一定会存在同时使用Redis缓存和本机缓存即 MemoryCache,
ABP默认应该是不支持存在多个缓存,至少目前我在官方文档没看到。我们查看,启用Redis缓存那几句代码中, UseRedis 方法的源代码:
可以发现在上图红框处注入了 AbpRedisCacheManager ,,然后可想而知我们在使用缓存的时候通过容器注入的就是Redis缓存了,那么我们只需要将MemoryCache也注入即可同时使用Redis和MemoryCache。
这只是我的想法,并没有进行测试,有兴趣的朋友可以测试一下。
好了Redis的设置十分简单,下篇将会给大家分享一下,我在core下使用通过mysql数据库来进行存储的hangfire的那些坑~
如果你觉得写的不错,请点一下下面的“推荐”,这是对我分享技术经验的支持,谢谢!↓↓↓↓↓↓↓↓↓↓↓
下一篇:Jquery滚动监听和附加导航
文章标题:ABP从入门到精通(3):aspnet-zero-core 使用Redis缓存
文章链接:http://soscw.com/essay/94357.html