JAVA本地缓存

为什么用本地缓存

本地缓存作用就是提高系统的运行速度,是一种空间换时间

例子

下订单时,页面需要选择 省、市、县,发送到后端的是 省、市、县 的 id值,在后端,需要通过关联查询得到 省、市、县 的 具体名字,这里就需要用到 查询

传统方式的缺点

从 MySQL 查询,有以下缺点:

  • 查询数据库,就需要读取硬盘,速度会慢

  • 下订单操作会很频繁,所以这里需要频繁查询 省、市、县 的 具体名字,增加数据库负担

  • 由于 省、市、县 的 id 和 名字 几乎不会改变,每次查询数据库就没有必要

本地缓存

将 省、市、县 的 id 和 名字,放入到本地缓存(内存)中,以后不需要查询 MySQL,只需要到本地缓存中查找即可

为什么不用缓存数据库?

为什么不用 Redis、Memcache 等缓存数据库?

因为这些都属于是 分布式缓存数据库,在下面场景下不需要分布式缓存:

  • 数据量小
  • 访问频繁
  • 很少改变

共存

Redis是一种优秀的分布式缓存数据库,但需要通过网络访问 redis,有时网络可能会造成瓶颈,所以下面数据库、redis、本地缓存会共存:

DB + Redis + LocalCache = 高效存储,高效访问

本地缓存的实现

简单实现

将数据放入到 Map 中,但过于简单

Google Guava Cache

详见 链接

参考:
https://www.jianshu.com/p/38bd5f1cf2f2
https://juejin.cn/post/7014459433077964808


原文出处:/show_1IX4meXbDeNY.html