首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Java知识图谱

    Caffeine缓存 最快缓存 内存缓存

    对比Guava Cache Caffeine是在Guava Cache的基础上做一层封装,性能有明显提高,二者同属于内存级本地缓存。 ,存储与内存部分的缓存数据丢失;存储与硬盘部分的数据继续存在 缓存配置存在两种模式:一种是纯内存型,一种是可持久化到磁盘 Caffeine 附着于业务进程,业务系统重启,缓存数据全部丢失 纯内存内存缓存的理解 :缓存都是使用内存作为存储媒介的,各种缓存服务的区别如下:Caffeine是内存缓存是指缓存与调用者属于同一个应用,准确的说属于同一个JVM;Redis是指另外一个独立进程的内存型,缓存数据存储在Redis 数据库的内存中,而不是在调用服务所属的内存中。 过期时间是不同CacheName间缓存配置的重要区别。 3、Key 内存缓存,无可视化界面,因此首要满足键值的唯一性,键值唯一是正确使用业务缓存的基础保证。

    3.7K30编辑于 2022-01-21
  • 来自专栏NetCore 从壹开始

    MemoryCache:内存缓存

    本文最新的内容,请查看官方操作说明文档,可能有增减: https://note.youdao.com/s/57OF2HZj .netcore自带了内存缓存的接口,可以直接使用。 }); } } 二、直接使用 1、在对应的类中,把接口注入即可 public class BlogCacheAOP : CacheAOPbase { //通过注入的方式,把缓存操作接口通过构造函数注入 _cache; public BlogCacheAOP(ICaching cache) { _cache = cache; } } 2、用法 // 获取缓存值 var cacheValue = _cache.Get(cacheKey); // 设置缓存 _cache.Set(cacheKey, response, 10); 三、可以直接使用官方的缓存接口

    56570编辑于 2023-08-23
  • 来自专栏JusterZhu

    内存缓存MemoryCache

    以下文章来源于智能大石头 ,作者智能大石头 内存缓存MemoryCache实现了ICache接口,Redis同样实现了ICache接口,两者在缓存操作上达到了高度抽象统一。 常用于进程内千万级以下数据缓存场景。 有可能缓存项刚好是默认值,或者只是反序列化失败,解决缓存穿透问题 /// <typeparam name="T">值类型</typeparam> /// <param 有可能缓存项刚好是默认值 Increment。累加 Decrement。 累减 缓存过期策略 MemoryCache内置LRU淘汰算法,当缓存项超过最大值Capacity(默认10万)时,剔除最久未使用的缓存项,以避免内存占用过大。

    1.1K20编辑于 2022-12-07
  • 来自专栏花落的技术专栏

    go 内存缓存

    内存缓存 CPU 有缓存:L1,L2,L3 不同等级缓存执行速度不一样,空间也不一样。 内存缓存:有栈有堆,栈速度要快很多,但一般用来存储小对象以及作用域函数内,堆大用于大对象以及全局对象等,但堆需要GC回收(三色标记法),存在stop the word 磁盘缓存:空间大,读取慢。 1.直接读mysql,这一般是后台管理员的增删改查了 2.直接读redis,redis到是方便各节点访问以及一定操作,但毕竟存在网络io 3.直接从本地内存中读数据,使用前你需要精准判断需要分配多大内存空间来充当本地内存缓存 ,为了更好的使用这有限的本地缓存,对它进行一定管理十分必要,可以参考redis的,过期时间,lru,lfu,fifo等等 开源工具 `go get -u github.com/bluele/gcache `,这个开源库提供分装好了的lru,lfu算法,你可以直接使用,也有过期时间的分装,以及使用内存大小。

    1.1K30发布于 2021-11-25
  • 来自专栏花落的技术专栏

    内存缓存详解

    内存缓存 CPU 有缓存:L1,L2,L3 不同等级缓存执行速度不一样,空间也不一样。 内存缓存:有栈有堆,栈速度要快很多,但一般用来存储小对象以及作用域函数内,堆大用于大对象以及全局对象等,但堆需要GC回收(三色标记法),存在stop the word 磁盘缓存:空间大,读取慢。 1.直接读mysql,这一般是后台管理员的增删改查了 2.直接读redis,redis到是方便各节点访问以及一定操作,但毕竟存在网络io 3.直接从本地内存中读数据,使用前你需要精准判断需要分配多大内存空间来充当本地内存缓存 ,为了更好的使用这有限的本地缓存,对它进行一定管理十分必要,可以参考redis的,过期时间,lru,lfu,fifo等等 开源工具 `go get -u github.com/bluele/gcache `,这个开源库提供分装好了的lru,lfu算法,你可以直接使用,也有过期时间的分装,以及使用内存大小。

    89500编辑于 2021-12-16
  • 来自专栏韩曙亮的移动开发专栏

    【Android 内存优化】Bitmap 内存缓存 ( Bitmap 缓存策略 | LruCache 内存缓存 | LruCache 常用操作 | 工具类代码 )

    文章目录 一、Bitmap 内存缓存策略 二、LruCache 内存缓存 三、LruCache 常用操作 四、LruCache 工具类 五、源码及资源下载 官方参考 : Google 官方提供的 内存优化参考 内存缓存策略 ---- 1 . : 如果某数据最近被访问过 , 那么之后的一段时间可能被访问的几率增加 , 其优先级提高 , 如果某数据很长时间没有访问 , 其优先级会被降低 ; 当 LruCache 缓存内存数据达到了设定的缓存大小 , 然后将新数据插入到队头 ; Lru 内存 缓存 , Disk 磁盘缓存参考 : JakeWharton/DiskLruCache 三、LruCache 常用操作 ---- 1 . 创建 LruCache : ① 指定内存 : 创建 LruCache 时 , 需要指定该缓存的最大内存 , 一般是 APP 可用内存的 1/8 ; ② 实现移除回调方法 : 由于内存紧张 , LruCache

    2.7K20编辑于 2023-03-27
  • 缓存技术:内存缓存和数据库缓存

    缓存技术包括内存缓存和数据库缓存内存缓存是将数据存储在内存中 以便在需要时快速访问。它通过减少对磁盘或网络的访问次数来提高系统的性能。 内存缓存的工作原理是将数据存储在内存中的缓存区域中,以便快速读取。当需要访问数据时,系统首先检查内存缓存中是否有所需数据的副本。如果有,则直接从内存中读取,避免了耗时的磁盘或网络访问。 如果没有,则从数据源(如数据库或网络)中获取数据,并将其存储在内存缓存中,以便以后的快速访问。 内存缓存可以根据不同的策略来管理存储的数据。 然而,内存缓存也存在一些限制和挑战。首先,内存是有限的资源,因此需要谨慎管理内存缓存的大小,避免过多占用内存导致系统的性能下降。 其次,内存缓存可能存在数据一致性的问题,当数据源中的数据发生变化时,内存缓存中的数据可能不是最新的。因此,需要采取合适的策略来更新内存缓存中的数据,并确保数据的一致性。

    17210编辑于 2025-08-29
  • 来自专栏程序员互动联盟

    【专业领域】Android图片缓存内存缓存

    Android设备的图片缓存分两种,一种是内存缓存,图片缓存在设备的内存中,一种是外部缓存,图片缓存在磁盘上,磁盘可以是内部的存储空间也可以是外部的sd卡。 这两种缓存各有各的优点,内存缓存优点是快,缺点是因为也是读取到内存中所以也会消耗内存,所以不能太大,用的时候要考虑分配的空间,还有一个缺点是应用重启后就会消失。 外部缓存的优点是可以长久保存大量的数据(相比较内存缓存而言),缺点就是慢。 内存缓存: 在Android中官网推荐使用LruCache作为内存缓存,LruCache实际上就是一个LinkedHashMap( 补充知识:LinkedHashMap是一个双向循环列表,不支持线程安全 ) (Runtime.getRuntime().maxMemory() / 1024);//获取应用在系统中的最大内存分配 //分配1/8的应用内存作为缓存空间 final int cacheSize

    1.9K100发布于 2018-03-12
  • 来自专栏小码农薛尧

    Java内存缓存-通过Google Guava创建缓存

    谷歌Guava缓存 Guava介绍 Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问。 ? LoadingCache,LoadingCache在缓存项不存在时可以自动加载缓存 LoadingCache<String, User> userCache ) //设置缓存容器的初始容量为5 .initialCapacity(5) //设置缓存最大容量为100, 超过100之后就会按照LRU最近虽少使用算法来移除缓存项 .maximumSize(100) //设置要统计缓存的命中率 第一次循环时缓存中没有数据,构建了缓存,第二次直接命中缓存。如果程序需要单机内存缓存,可以用该方式构建缓存

    3.2K30发布于 2019-08-27
  • 来自专栏小码农薛尧

    Java内存缓存-通过Map定制简单缓存

    缓存 在程序中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快。通过缓存,可以高效地重用之前检索或计算的数据。 为什么要用缓存 ? 场景 在Java应用中,对于访问频率高,更新少的数据,通常的方案是将这类数据加入缓存中,相对从数据库中读取,读缓存效率会有很大提升。 方案 基于JSR107规范自研 基于ConcurrentHashMap实现数据缓存 JSR107规范目标 为应用程序提供缓存Java对象的功能。 定义了一套通用的缓存概念和工具。 最小化开发人员使用缓存的学习成本。 最大化应用程序在使用不同缓存实现之间的可移植性。 支持进程内和分布式的缓存实现。 * 我使用SoftReference <Object> 作为映射值,因为软引用可以保证在抛出OutOfMemory之前,如果缺少内存,将删除引用的对象。

    3.9K41发布于 2019-08-27
  • 来自专栏潇洒哥写字

    Redis缓存穿透、缓存击穿、热key问题优化 + 内存缓存

    Redis缓存穿透、缓存击穿问题优化 + 内存缓存 1 背景 广交会线上举办,在第三方服务不能保证稳定性的情况下,为保证官网稳定性,新增数据聚合服务,用于缓存数据,并保护第三方服务,且在第三方服务失败的情况下 定时更新redis的时候,更新20个key,请求时redisKey重新设计为apiName_page_size_language_randomNum 4 内存缓存 虽然redis的性能已经比较优秀了,但是为了保证在大规模并发请求时 (压测)服务稳定性,我们考虑在redis缓存之前,加上一层内存缓存,将前20页的数据缓存在本地内存,请求若命中内存则直接返回,这样使得请求响应更快更稳定。 [image.png] 使用ristretto来做内存缓存,可以控制缓存的时间、数量、大小、淘汰策略等。 [yam5rjyvbk.png] 经过内存缓存的优化之后,压测接口的响应时间从ms级提升到了µs级,且压测锯齿明显减少。

    2.5K341发布于 2020-06-25
  • 来自专栏Coding Diary

    CPU缓存内存屏障

    CPU性能优化手段 - 缓存 为了提高程序的运行性能, 现代CPU在很多方面对程序进行了优化 例如: CPU高速缓存, 尽可能的避免处理器访问主内存的时间开销, 处理器大多会利用缓存以提高性能 ? , 为了再次提高CPU的运算速度, 在CPU外部放置一高速缓存存储器, 即二级缓存 L3 Cache(三级缓存)现在都是内置的, 而它的实际作用既是, L3缓存的应用可以进一步降低内存延迟, 同时提升大数据量计算时处理器的性能 一般是多核共享一个L3缓存 CPU在读取数据时, 先在L1中寻找, 再从L2中寻找, 再从L3中寻找, 然后是内存, 最后是外存储器 缓存同步协议 多CPU读取同样的数据进行缓存, 进行不同运算之后, : 缓存中的数据与主内存的数据并不是实时同步的, 各CPU间缓存的数据也不是实时同步. 读内存屏障(Load Memory Barrier): 在指令前插入Load Barrier, 可以让高速缓存中的数据失效, 强制从新从主内存读取数据 强制读取主内存内容, 让CPU缓存和主内存保持一致

    3.6K31发布于 2019-09-25
  • 来自专栏DannyHoo的专栏

    利用SDWebImage清除内存缓存

    u010105969/article/details/53377679 我们在使用SDWebImage下载图片的时候会发现如果一个TableView上的单元格很多而且每个单元格上都有图片那么在上滑单元格的时候内存会越来越大 ,因此我们必须想一个清除内存的方法,今天介绍的方法就是SDWebImage中的一个方法: [[SDImageCache sharedImageCache] clearMemory]; 此方法可以将利用 SDWebImage下载的图片从缓存中清除,注意是缓存中并不是沙盒中。 实际从缓存中清除图片方法在内存警告的时候SDWebImage会自动调用清除缓存方法,可内存警告实在有点难,不知道要等到内存多大的时候才会发生内存警告进而让SDWebImage自动清除缓存。 因此我们自己去清除缓存,至于在什么时候调用还要看需求。

    2.8K30发布于 2018-09-13
  • 来自专栏Python学习者

    Python中使用内存缓存

    在编写Python应用程序时,缓存很重要。使用缓存来避免重新处理数据或访问一个缓慢的数据库可以提高你的性能。在Python中,我们可以使用memcached 模块来在我们的脚本中加入内存缓存。 本文将讨论准备内存缓存操作和主要的memcached 使用。我们还将学习使用Pythoncache 和set 的高级模式。 一旦安装完毕,可以通过调用memcached 命令来启动memcached : memcached使用Python设置和获取缓存值如果你从来没有使用过memcached 包,就可以直接掌握它。 下面的代码演示了如何在你的Python应用程序中利用memcached 作为一个网络分布式的缓存:import memcachemcobject = memcache.Client(['127.0.0.1

    64130编辑于 2023-11-02
  • 来自专栏指尖下的Android

    内存缓存的区别

    今天看书的时候又看到了内存缓存,之所以说又,是因为之前遇到过查过资料,但是现在又忘了(图侵删)。 ? 所以又复习一遍,记录一下,有所纰漏的地方,欢迎指正。 ? 同志们,上图并不是内存缓存中的任何一个,那有的小伙伴会问了,啥也不是,你怎么强行发图,别急,慢慢道来。 上图是中央处理器即CPU的图片,一般来说缓存都是集成到CPU里面的。 如果按存取数据的速度相比,缓存是比内存快非常多的,我们电脑的操作系统会为应用程序分配好内存,但是由于内存的存取效率比较低下(相对于CPU的处理速度而言),缓存就是为了解决高速CPU对慢速内存的存取。 还有一个概念,就是一级缓存和二级缓存。 CPU在工作时,先去找静态RAM(一级缓存),然后再去找后加的高速动态RAM(二级缓存),最后内存。 最后再发一张内存条的图 ?

    3.9K20发布于 2018-09-13
  • 来自专栏大大的微笑

    基于LoadingCache的内存缓存

    //设置并发级别为10 .concurrencyLevel(10) //设置写缓存后 30分钟过期 .expireAfterWrite(30, TimeUnit.MINUTES) // //设置写缓存后30分钟刷新 .initialCapacity(5) //设置缓存最大容量为500,超过后会按照LRU算法来移除缓存项 .maximumSize (500) //设置要统计缓存的命中率 .recordStats() //设置缓存的移除通知 CacheLoader的实现自动加载缓存 .build( new CacheLoader<String,

    83210编辑于 2021-12-28
  • 来自专栏JMCui

    Guava 内存缓存的使用

    一、概述 guava⽬前有三种刷新本地缓存的机制: expireAfterAccess:当缓存项在指定的时间段内没有被读或写就会被回收。 expireAfterWrite:当缓存项在指定的时间段内没有更新就会被回收。-- 常用 refreshAfterWrite:当缓存项上一次更新操作之后的多久会被刷新。 -- 常用 二、原理 expireAfterWrite 为了避免缓存雪崩,guava 会限制只有一个加载操作时进行加锁,其他请求必须阻塞等待这个加载操作完成。 refreshAfterWrite 当缓存项上一次更新操作之后的多久会被刷新。 设置合理的 expireAfterWrite 和 refreshAfterWrite 时间来保证缓存不会被瞬间击垮。根据合理的场景设置合理的参数。

    3.1K10发布于 2021-08-18
  • 来自专栏程序员互动联盟

    【专业技术】 Android图片缓存内存缓存

    Android设备的图片缓存分两种,一种是内存缓存,图片缓存在设备的内存中,一种是外部缓存,图片缓存在磁盘上,磁盘可以是内部的存储空间也可以是外部的sd卡。 这两种缓存各有各的优点,内存缓存优点是快,缺点是因为也是读取到内存中所以也会消耗内存,所以不能太大,用的时候要考虑分配的空间,还有一个缺点是应用重启后就会消失。 外部缓存的优点是可以长久保存大量的数据(相比较内存缓存而言),缺点就是慢。 4、内存缓存: 在Android中官网推荐使用LruCache作为内存缓存,LruCache实际上就是一个LinkedHashMap( 补充知识:LinkedHashMap是一个双向循环列表,不支持线程安全 ) (Runtime.getRuntime().maxMemory() / 1024);//获取应用在系统中的最大内存分配 //分配1/8的应用内存作为缓存空间 final int cacheSize

    2K50发布于 2018-03-13
  • 来自专栏Android开发指南

    13.缓存、三级缓存内存溢出、AsyncTask

    public class CacheUtils { /** * 缓存原理:设置缓存 key 是url, value是json(解析出来的) */ public static void - 内存缓存, 优先加载, 速度最快 - 本地缓存, 次优先加载, 速度快 - 网络缓存, 不优先加载, 速度慢,浪费流量 服务器端下载的图片是使用 Http的缓存机制,每次执行将本地图片的时间发送给服务器 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。 new FileOutputStream(file));//100是质量 } catch (Exception e) { e.printStackTrace(); } } 3.内存缓存 至于具体怎么释放,我没考虑过,但用软引用的问题在于,你很难控制缓存的大小,也就是说,只有等到你的内存快要撑爆,你的图片缓存才会被回收。是不是感觉傻傻的?

    1.4K120发布于 2018-05-14
  • 来自专栏java架构计划训练营

    centos7清理内存缓存

    查看内存使用状态 free -h free -m echo 3 > /proc/sys/vm/drop_caches 参数说明: 0 //默认是0; 1-清空页缓存; 2-清空inode和目录树缓存 ; 3-清空所有缓存

    4.1K20编辑于 2022-06-14
领券