专栏首页上善若水016 进程内缓存和进程外缓存的对比

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

对比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基础之(触发器)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 0x01缓存基本概念一览

    它的主要实现思想是:在程序和数据源之间引入一个中间层即Cache,访问cache的时间成本肯定远低于数据源。

    上善若水.夏
  • s001android逆向安全初级篇之apk逆向常用工具及简单使用一览

    关于apk 逆向中的一些工具的使用,看了不少文章,也使用过有很长一段时间了,今天对此做一总结:

    上善若水.夏
  • java002-java学习路线

    ​ JSP(Java Server Pages) : Java服务器页面

    上善若水.夏
  • 缓存穿透、缓存击穿和缓存雪崩实践

    我们使用缓存的主要目是提升查询速度和保护数据库等稀缺资源不被占满。而缓存最常见的问题是缓存穿透、击穿和雪崩,在高并发下这三种情况都会有大量请求落到数据库,导致数...

    java思维导图
  • 分布式系统关注点(18)——「缓存穿透」和「缓存雪崩」到底啥区别?

    有句话说得好,欲要使其毁灭,先要使其疯狂。当你沉浸在缓存所带来的系统tps飙升的喜悦中时,使你系统毁灭的种子也已经埋在其中。

    Zachary_ZF
  • Redis缓存穿透、缓存雪崩和缓存击穿理解

    缓存穿透,是指查询一个数据库一定不存在的数据。正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并把查询...

    爱撸猫的杰
  • 分布式缓存考点梳理 + 高频面试题

    对缓存和数据库的考察,一直都是业务开发同学在面试中的核心问题,特别是缓存部分,随着大部分公司业务规模的增加,缓存的应用越来越重要。我偶尔会和身边的同事调侃:如何...

    MickyInvQ
  • 缓存 | 从本地缓存到分布式缓存, Guava, Caffeine, Memcached, Redis

    在程序设计中,经常能听到的就是以时间换空间和以空间换时间。缓存作为一种能加快程序性能的银弹,它是典型的后者(以空间换时间).

    双鬼带单

扫码关注云+社区

领取腾讯云代金券