2.3缓存

RAINAI RAINAI     2022-08-29     252

关键词:

缓存

介绍

  ABP为缓存提供了一个抽象接口。它内部使用这个缓存抽象。默认使用MemoryCache实现,但可以换用其他的缓存提供者实现。例如Abp.RedisCache包实现了在Redis中实现缓存。(参见下面的“Redis缓存集成”部分)。

ICacheManager

  缓存的主要接口时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方法

  不要在构造函数中使用GetCache。如果类不是单例的话,缓存可能会被释放。

ICache

  ICacheManager.GetCaChe方法返回ICache。缓存是单例的(每个缓存名称)。首次需要的时候创建,然后每次都返回同样的缓存对象。所以,我们可以在不同的类(客户端)使用相同的名字共享同样的缓存。

  在实例代码中,我们看到了ICache.Get方法的简单使用。它有两个参数:

  • Key:缓存中一个项的唯一字符串键。
  • factory:如果指定的键没有项目时调用的方法。工厂方法应该创建并返回真实的项。如果指定的键在缓存中存在的话就不会调用这个方法。

  ICache接口也有如GetOrDefault,Set,Remove和Clear这样的方法。同样也有这些方法的异步版本。

ITypedCache

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、缓... 查看详情