ABP从入门到精通(3):aspnet-zero-core 使用Redis缓存
一.Redis是什么?
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”方法里
Configuration.Caching.UseRedis(options =>
{
options.ConnectionString = _appConfiguration["Abp:RedisCache:ConnectionString"];
options.DatabaseId = _appConfiguration.GetValue<int>("Abp:RedisCache:DatabaseId");
});
2.修改redis配置 配置文件在项目“Web.Mvc”里 appsettings.json

这里说一下DatabaseId,及Redis数据库ID,不同的数据库ID有助于在同一服务器中创建不同的密钥空间(隔离缓存)。
3.设置默认过期时间,同样是在 项目“Web.Core” 的“AbpZeroTemplateWebCoreModule.cs” 在“PreInitialize”方法里,放在redis代码之前
//设置所有缓存的默认过期时间
Configuration.Caching.ConfigureAll( cache =>
{
cache.DefaultAbsoluteExpireTime = TimeSpan.FromMinutes();
});
//设置某个缓存的默认过期时间 根据 "CacheName" 来区分
Configuration.Caching.Configure("CacheName", cache =>
{
cache.DefaultAbsoluteExpireTime = TimeSpan.FromMinutes();
});
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的那些坑~
如果你觉得写的不错,请点一下下面的“推荐”,这是对我分享技术经验的支持,谢谢!↓↓↓↓↓↓↓↓↓↓↓
ABP从入门到精通(3):aspnet-zero-core 使用Redis缓存的更多相关文章
- redis入门到精通系列(二):redis操作的两个实践案例
在前面一篇博客中我们已经学完了redis的五种数据类型操作,回顾一下,五种操作类型分别为:字符串类型(string).列表类型(list).散列类型(hash).集合类型(set).有序集合类型(so ...
- ABP从入门到精通(1):aspnet-zero-core项目启动及各项目源码说明
一.ABP的简单介绍 ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NET Boilerplate是一个用最佳实践 ...
- ABP从入门到精通(2):aspnet-zero-core 使用MySql数据库
关于 asp.net zero core 项目的启动及说明,请观看我前面的博文 http://www.cnblogs.com/stulzq/p/7237153.html 本操作对于ABP默认项目应该也 ...
- ABP从入门到精通(5):使用基于JWT标准的Token访问WebApi
项目:asp.net zero 4.2.0 .net core(1.1) 版本 我们做项目的时候可能会遇到需要提供api给app调用,ABP动态生成的WebApi提供了方便的基于JWT标准的Token ...
- ABP从入门到精通(6):快速重命名解决方案
SolutionRenamer SolutionRenamer 是一个解决方案快速重命名工具.经测试重命名一个全新asp.net zero core项目(ABP asp.net zero,.net c ...
- ABP从入门到精通(5):.扩展国际化语言资源
ABP的有些组件使用的该组件自带的语言包资源,所以在有些时候会因为我们当前使用的语言对应的语言包不全,而造成日志一直记录WARN.ABP给我们提供了扩展语言包资源的接口,可以解决这个问题. 以下示例代 ...
- ABP从入门到精通(4):使用基于JWT标准的Token访问WebApi
项目:asp.net zero 4.2.0 .net core(1.1) 版本 我们做项目的时候可能会遇到需要提供api给app调用,ABP动态生成的WebApi提供了方便的基于JWT标准的Token ...
- redis入门到精通系列(九):redis哨兵模式详解
(一)哨兵概述 前面我们讲了redis的主从复制,为了实现高可用,会选择一台服务器作为master,多台服务器作为slave.现在有这样一种情况,master宕机了,这时系统会选择一台slave作为m ...
- redis入门到精通系列(八):redis的高可用--主从复制详解
(一)主从复制介绍 前面所讲的关于redis的操作都属于单机操作,单机操作虽然操作简单,但是处理能力有限,无法高可用.所谓高可用性,就是指当一台服务器宕机的时候,有备用的服务器能顶替上,在单机操作上这 ...
随机推荐
- Linux版微信
一.到github上下载https://github.com/geeeeeeeeek/electronic-wechat/releases下载linux-x64.tar.gz,具体根据操作系统是32位 ...
- SQL中创建外键约束
alter table 表名 add constraint 外键约束名 foreign key(列名) references 引用外键表(列名)
- android 下 利用webview实现浏览器功能
android 下 利用webview实现浏览器功能(一): 1.界面添加WEBVIEW控件. 2.在界面.JAVA代码页面(protected void onCreate(Bundle savedI ...
- python大规模爬取京东
python大规模爬取京东 主要工具 scrapy BeautifulSoup requests 分析步骤 打开京东首页,输入裤子将会看到页面跳转到了这里,这就是我们要分析的起点 我们可以看到这个页面 ...
- 浅析TCP/IP 协议
TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族. TCP/IP协议模块关系 从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层.网络层.传输层.应用层 ...
- Treasure Hunt
Treasure Hunt time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- c#中foreach的一种用法
以下定义的MyClass类中的addnum方法使用了一个数组型参数b: public class MyClass { ; public void addnum(ref int sum, params ...
- C/C++中的volatile究竟是什么鬼?
将变量或对象声明为volatile类型后,每次对变量的访问都是从其内存直接读取.那什么时候对变量的访问不是从其内存读取的呢?一种常见的情况就是编译器开启了优化选项,这时候对变量的访问有可能就是从寄存器 ...
- web前端CSS2学习2017.6.17
CSS---表现层,修饰和表现html文档,为了解决结构层和表现层分离的问题. 通过CSS极大的提高了工作效率,方便工作人员维护和管理CSS:层叠样式表,目前用的最广泛的css版本为css2,最新版本 ...
- Java分形
目前笔者接触过的分形主要有一下几种: 1.类似Clifford的分形.这种分形的特点是:分形的初始坐标为(0,0),通过初始坐标经过大量的迭代,得到一系列的点,根据得到的点来绘制分形曲线.这类分形的参 ...