本地缓存和远程缓存理解
一.本地缓存
本地缓存是把数据存储在进程中,查询速度极快(纳秒级别,内存访问),大小取决于单机内存,因为存储在进程中,当进程重启时数据丢失,在分布式系统中,数据是独立存在不同的单机上,不能共享数据。
使用场景:计算密集复杂比如:加/解密,复杂算法(低延迟),会话临时缓存比如:用户权限列表,令牌(不可持久化),延迟低比如:风控黑名单(低延迟)
工具:Caffeine、Guava Cache、Ehcache等。
二.远程缓存
远程缓存是把数据存储在独立服务的服务器中,查询速度较快(毫秒级,网络通信),大小可根据需要扩展,可持久化保存,在分布式中,数据是可以实现共享和一致性。
使用场景:高并发缓存击穿防护比如秒杀,防止击穿数据库(共享性,一致性),分布式系统共享数据比如库存(共享性),数据备份于恢复(持久化)
工具:Redis、Memcached、Tair等。
三.多级缓存(本地缓存和远程缓存)
多级缓存是本地缓存和远程缓存互相搭配,相互弥补的方案,此方案可以提高系统的性能,降低数据库被击穿的风险和提升数据库的QPS,但需要妥善处理缓存一致性问题,使用JetCache框架可以解决多级缓存可以节省大部分工作。
流程:客户端 -> 本地缓存 -> 远程缓存 -> 数据库
使用场景:热点数据/热门商品(90%访问本地缓存命中,远程缓存兜底,减少网络开销)。