关键词:
缓存
- 介绍
- ICacheManager
- ICache
- 配置
- 实体缓存
- 实体缓存如何工作
- Redis缓存集成
ABP为缓存提供了一个抽象接口。它内部使用这个缓存抽象。默认使用MemoryCache实现,但可以换用其他的缓存提供者实现。例如Abp.RedisCache包实现了在Redis中实现缓存。(参见下面的“Redis缓存集成”部分)。
缓存的主要接口时ICacheManager。我们可以注入并使用它获取缓存。示例:
public class TestAppService : ApplicationService { private readonly ICacheManager _cacheManager; public TestAppService(ICacheManager cacheManager) { _cacheManager = cacheManager; } public Item GetItem(int id) { //Try to get from cache return _cacheManager .GetCache("MyCache") .Get(id.ToString(), () => GetFromDatabase(id)) as Item; } public Item GetFromDatabase(int id) { //... retrieve item from database } }
在这个例子中,我们注入了ICacheManager并得到了一个名为MyCache的缓存。缓存名称是大小写敏感的,意味着“MyCache”和“MYCACHE”是不同的缓存。
不要在构造函数中使用GetCache。如果类不是单例的话,缓存可能会被释放。
ICacheManager.GetCaChe方法返回ICache。缓存是单例的(每个缓存名称)。首次需要的时候创建,然后每次都返回同样的缓存对象。所以,我们可以在不同的类(客户端)使用相同的名字共享同样的缓存。
在实例代码中,我们看到了ICache.Get方法的简单使用。它有两个参数:
- Key:缓存中一个项的唯一字符串键。
- factory:如果指定的键没有项目时调用的方法。工厂方法应该创建并返回真实的项。如果指定的键在缓存中存在的话就不会调用这个方法。
ICache接口也有如GetOrDefault,Set,Remove和Clear这样的方法。同样也有这些方法的异步版本。
ICache接口使用string类型作为键,object作为值。ITypeCache是ICache的包装器,用来提供类型安全、泛型的缓存。我们可以使用GetCache扩展方法获得ITypedCache:
ITypedCache<int, Item> myCache = _cacheManager.GetCache<int, Item>("MyCache");
我们也可以使用AsTyped扩展方法将一个已存在的ICache实例转换为ITypedCache。
springboot集成redis配置mybatis二级缓存(代码片段)
目录写在前面源码获取一、MyBatis缓存机制1.1、一级缓存1.2、二级缓存二、集成Redis2.1、安装Redis2.2、项目引入Redis2.2.1、Maven依赖2.2.2、配置application.yml2.2.3、配置序列化规则三、配置二级缓存2.1、开启二级缓存2.2、自定义缓存类2.3... 查看详情
fasddfs上增加ngx_cache_purge-2.3与http_image_filter_module模块实现剪裁缓存功能
...服务器上安装了2个nginx2)现在需要在nginx2上增加剪裁跟缓存模块3)增加模块为ngx_cache_purge-2.3与http_image_filter_module 1、使用/usr/local/nginx2/sbin/nginx-V目前nginx模块如下:configurearguments: --prefix=/usr/local/nginx2 &nb... 查看详情
Android Studio 2.3 gradle 错误
...tyledTextOutput”。此意外错误的可能原因包括:Gradle的依赖缓存可能已损坏(这有时会在网络连接超时后发生。)重新 查看详情
Symfony Validator 不使用缓存
】SymfonyValidator不使用缓存【英文标题】:SymfonyValidatornotusingcache【发布时间】:2021-08-0720:53:54【问题描述】:我有symfony5.2.3项目,其中包含一堆缓慢的验证单元测试。我想要缓存验证约束映射。按照文档https://symfony.com/doc/current/r... 查看详情
thinkphp3.2.3提示非法操作怎么解决
参考技术A需要开启debug调试模式,在入口文件开启调试模式,在入口文件index.php中写入一下代码define(‘APP_DEBUG’,true),然后删除runtime缓存目录,就可以看到具体的错误信息了你可以去后盾人平台看看,里面的东西不错 查看详情
redis-替代mybatis二级缓存(代码片段)
文章目录1、二级缓存1.1、cache使用1.2、原理2、Redis替代二级缓存2.1、获取ApplicationContext2.2、自定义cache实现类2.3、关联查询的缓存处理3、缓存优化策略3.1、对key进行优化编程不良人Redis链接Redis面经属实有点懵,回头补一下1... 查看详情
redis-替代mybatis二级缓存(代码片段)
文章目录1、二级缓存1.1、cache使用1.2、原理2、Redis替代二级缓存2.1、获取ApplicationContext2.2、自定义cache实现类2.3、关联查询的缓存处理3、缓存优化策略3.1、对key进行优化编程不良人Redis链接Redis面经属实有点懵,回头补一下1... 查看详情
redis-替代mybatis二级缓存(代码片段)
文章目录1、二级缓存1.1、cache使用1.2、原理2、Redis替代二级缓存2.1、获取ApplicationContext2.2、自定义cache实现类2.3、关联查询的缓存处理3、缓存优化策略3.1、对key进行优化编程不良人Redis链接Redis面经属实有点懵,回头补一下1... 查看详情
在asp.netcore应用中使用imemorycache缓存(代码片段)
文章目录1.简介2.内存缓存2.1使用`IMemoryCache`2.2获取缓存数据`GetOrCreate`、`GetOrCreateAsync`和`Get`2.3移除缓存2.4缓存配置项`MemoryCacheEntryOptions`2.5设置缓存大小`SetSize`与`SizeLimi 查看详情
android绘图双缓存技术(代码片段)
...幕上绘制曲线2.1错误示例-在屏幕上绘制曲线2.2使用“双缓存技术”-在屏幕上绘制曲线2.3使用Path优化-在屏幕上绘制曲线2.4使用Path优化+“双缓存技术”-在屏幕上绘制曲线2.5优化path的控制点-在屏幕上绘制曲线(终极方案)三、在... 查看详情
android绘图双缓存技术(代码片段)
...幕上绘制曲线2.1错误示例-在屏幕上绘制曲线2.2使用“双缓存技术”-在屏幕上绘制曲线2.3使用Path优化-在屏幕上绘制曲线2.4使用Path优化+“双缓存技术”-在屏幕上绘制曲线2.5优化path的控制点-在屏幕上绘制曲线(终极方案)三、在... 查看详情
redis,性能加速的催化剂(代码片段)
文章目录一、前言二、redis基础知识2.1从“处理器-缓存-内存”到“后台-redis-数据库”2.2不使用缓存与使用缓存(读操作+写操作)2.3redis典型问题:缓存穿透、缓存雪崩和缓存击穿(以淘宝双11抢购为例)2.3.1缓存穿透... 查看详情
Canvas:尝试在 Android 2.3 上使用回收的位图 RuntimeException
...,因此回收位图是此应用程序的必要条件。我正在使用Lru缓存(在下面实现)来处理位图回收。 查看详情
如何保证缓存和数据库的一致性?(代码片段)
文章目录1.问题分析2.Cache-Aside2.1读缓存2.2写缓存2.3延迟双删2.4如何确保原子性3.Read-Through/Write-Through3.1Read-Through3.2Write-Through4.WriteBehind很多小伙伴在面试的时候,应该都遇到过类似的问题,如何确保缓存和数据库的一致性... 查看详情
编程实践关于应用层的本地内存缓存框架的代码实现(代码片段)
文章目录用golang实现一个线程安全的本地缓存框架,给出具体的代码实例。一、准备工作1.1定义必要的数据结构二、实现逻辑2.1设置缓存项2.2获取缓存项2.3删除缓存项用Java实现一个线程安全的本地缓存框架,给出具体的代码实... 查看详情
细说redis-p2(2022.03.20)
...redis是干嘛以及集群等功能以及细节。这一章我们来聊聊缓存的设计和使用redis需要注意的点以及过期数据处理的策略。细说Redis-p21.多级缓存的设计1.1Ngnix层1.2EhCache层1.3Redis层2.Redis的常见问题2.1缓存击穿2.2缓存穿透2.3缓存雪崩3.Re... 查看详情
mybatis源码分析-缓存原理(代码片段)
文章目录1.简介2.缓存类介绍2.1PerpetualCache2.2LruCache2.3BlockingCache3.CacheKey4.一级缓存5.二级缓存6.总结参考序号内容链接1MyBatis源码分析-MyBatis入门https://thinkwon.blog.csdn.net/article/details/1148088522MyBatis源码分析-配置文件解析过程https://thinkw... 查看详情
mysql缓存策略详解
MySQL缓存方案一、MySQL缓存方案目的分析1.1、缓存层的作用1.2、缓存层选择1.3、场景分析二、提升MySQL访问性能的方式2.1、MySQL主从复制2.2、读写分离2.3、连接池2.4、异步连接三、redis作为主数据库的常用方法四、缓存方案4.1、缓... 查看详情