美文网首页我爱编程
016 进程内缓存和进程外缓存的对比

016 进程内缓存和进程外缓存的对比

作者: 夏大王2019 | 来源:发表于2018-03-27 22:07 被阅读174次

对比redis缓存和本地内存

这两者是什么,

在java应用中,对于访问频率比较高,又不怎么变化的数据,常用的解决方案是把这些数据加入缓存。相比DB,缓存的读取效率快好不少。java应用缓存一般分两种,一是进程内缓存,就是使用java应用虚拟机内存的缓存;另一个是进程外缓存,现在我们常用的各种分布式缓存。相比较而言,进程内缓存比进程外缓存快很多,而且编码也简单;但是,进程内缓存的存储量有限,使用的是java应用虚拟机的内存,而且每个应用都要存储一份,有一定的资源浪费。进程外缓存相比进程内缓存,会慢些,但是,存储空间可以横向扩展,不受限制。

进程内缓存和进程外缓存,各有优缺点,针对不同场景,可以分别采用不同的缓存方案。对于数据量不大的,我们可以采用进程内缓存。或者只要内存足够富裕,都可以采用,但是不要盲目以为自己富裕,不然可能会导致系统内存不够。

数据访问时间的数量级别

事件 时间
1 从数据库中读取一条数据(有索引) 十几毫秒
2 从远程分布式缓存读取一条数据 0.5毫秒
3 从内存中读取1MB数据 十几微妙

插入一组数据做位参考

平均单次请求的时间,机器配置相关(i5 8GB的pc)

使用的缓存 t=某次的数据,测试的共次数,av=平均数 ns
本地缓存 t=285907391ns,times=2500,av=468464138
redis缓存 t=465590284ns,times=2653,av=961629872
结论 单次请求的时间 本地缓存小于redis 缓存

测试的方法:

50个线程,每个线程中连续请求10次

使用的缓存
本地缓存 请求500,返回500,时间9748ms
redis缓存 请求500,返回437,时间 12000ms
结论 支持的并发请求数 本地缓存大于 使用redis缓存

参考链接

  1. java应用本地缓存
  2. Java学习之ConcurrentHashMap实现一个本地缓存
  3. 高效的找出两个List中的不同元素
  4. SqlServer基础之(触发器)

相关文章

  • 016 进程内缓存和进程外缓存的对比

    对比redis缓存和本地内存 这两者是什么, 在java应用中,对于访问频率比较高,又不怎么变化的数据,常用的解决...

  • Redis适合的场景

    Redis适合的场景 一、【进程内】缓存和【进程外】缓存 【进程内】缓存:就是把数据缓存在服务的进程内,就是进程内...

  • 高并发下为什么更喜欢进程内缓存

    进程内缓存是指缓存和应用程序在相同地址空间。即同一个进程内。分布式缓存是指缓存和应用程序位于不同进程的缓存,通常部...

  • 前台系统本地缓存和分布式缓存实现方案

    根据缓存是否与应用进程属于同一进程,可以将内存分为本地缓存和分布式缓存。本地缓存是在同一个进程内的内存空间中...

  • 进程和应用生命周期

    进程和应用生命周期 Note : 前台进程 --> 可见进程 --> 服务进程 --> 缓存进程(原来...

  • springboot下,ehcache用法

    单节点下的用法,集群未知。 ehcahe是Java进程内的缓存,不是一个单独的进程、服务。 设置缓存策略时,可以设...

  • 【SpringBoot】 集成 Ehcache

    SpringBoot ehcache 缓存 简介 EhCache 是一个纯 Java 的进程内缓存框架,具有快速、...

  • Java本地缓存

    引言 缓存是存储在内存中的KV数据结构,分为分布式缓存和本地缓存。 分布式缓存方案中,一般应用进程和缓存进程不在同...

  • 缓存常见问题这一篇就够了

    一、缓存架构 上图是之前项目的缓存架构,加了二个级别的缓存:进程内缓存、分布式缓存。 读操作的思路:判断该缓存是否...

  • go实现LFU缓存淘汰算法

    注:以下的缓存淘汰算法实现,不考虑 并发 和 GC(垃圾回收) 问题 本文讨论的是 进程内缓存,是存放在内存中的...

网友评论

    本文标题:016 进程内缓存和进程外缓存的对比

    本文链接:https://www.haomeiwen.com/subject/rqlecftx.html