我爱编程

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

2018-03-27  本文已影响174人  夏大王2019

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

上一篇下一篇

猜你喜欢

热点阅读