缓存二三事

什么是缓存

将持久化的数据存放到内存副本中,用于提高并发,提高读取速度。

为什么用了缓存就能实现了

1.基于内存操作(内存读取快)

2.空间换时间(执行慢的程序可以通过消耗内存来优化,而消耗内存大的执行慢)

3.降低瓶颈操作(避免请求数据库的次数)

4.减少对外依赖()

问题:

公司使用的什么缓存?

缓存架构:



层级 常见产品 缓存解决方法缓存解决方法 缓存技术
应用层 浏览器 浏览器缓存、本地缓存 Http缓存协商、cookie、sqllite、websql
网络层 网络路由 CDN Squid
负载层 Nginx、Apache 动静分离、反向代理缓存 基于Http服务器
服务层 Java、PHP 动态页面静态化、应用缓存、分布式缓存、Mybatis缓存 freemarker、velocity、thymeleaf、ehcache、guava、jodd、redis memcache mybatis一二级缓存
数据库 Oracle、MySQL 缓冲区 buffer pool

本地缓存和分布式缓存的对比:

对比项 本地缓存本地缓存 分布式缓存
概念 缓存和应用在同一个进程中,是基于JVM的缓存 单独的组件与应用分离
社区成熟 非常高 非常高
性能 很高 单机 高 需要TCP协议交互
黏度 紧耦合 松耦合
使用环境 单机 单机/集群环境
高可用 与应用同生共死 集群抱团死一个还有千万个
应用共享 不能共享 可共

本地应用缓存:caffeine是对guava的改造升级,SpringBoot2.0之后不再支持guava

对比项 guava caffeine ehcache
是否开源 Y(Google) Y(Apache) Y(Terracotta)
级别 轻量级 轻量级 重量级
知名度 Java开发者必备 Spring5 Hibernate
缓存算法 LRU W-TinyLFU LRU、LFU、FIFO
JDK版本 >=1.6 >=1.8 >=1.5
持久化支持 不支持 不支持 支持(收费)
集群解决方案 有(商业)
Spring Cache支持 不支持 支持 支持
性能监控 提供(jmx,页面)

分布式应用缓存:

扫描二维码关注公众号,回复: 1840181 查看本文章
对比项 Redis memcached
性能 很高很高TPS QPS 10W 很高很高TPS QPS 10W
数据类型 K/V list set map K/V
内存限制 突破物理内存 不能超过可用内存
高可用(集群) 支持 支持
可靠性(持久性) 支持AOF、快照
事务支持 支持 用cas保证一致性(锁)
缓存策略 LRU、FIFO LRU
Spring Cache支持 支持 支持
性能监控


猜你喜欢

转载自blog.csdn.net/z15732621582/article/details/80720603