流量缓存和直接流量看那个费流量,先缓存耗流量还是直接看耗流量

聚客2022-05-29  33

缓存是什么意思(缓存比直接看省流量吗) 一.缓存的产生与发展 1.1 什么是缓存?

cache(缓存),本义是指访问速度比一般随机存取存储器(RAM)更快的高速存储器。Cache一词来源于1967年的一篇电子工程期刊论文,用于计算机工程领域。

1.2 缓存的发展?

问题:初始PC处理器CPU没有缓存,CPU直接访问内存数据,访问数据的速度无法匹配CPU的处理速度。

意思是:后来Intel公司给CPU增加了可选缓存的支持。当CPU处理数据时,它将首先在缓存中查找数据。如果由于之前的操作,数据已经临时存储在其中,则没有必要从主存储器中读取数据,从而加快了数据读取速度。

优化:添加L2缓存(L2缓存),甚至L3缓存、Cache等。在CPU内核中。

1.3 缓存概念的扩充

现在我们知道缓存的概念不仅限于CPU和主存之间,还包括硬盘和网络之间,软件和硬件之间,系统应用和数据库之间。

总之,任何位于两个数据处理速度差异较大的介质之间,用于协调两者之间数据传输速度差异的结构,都可以称为Cache。

1.4 缓存在应用服务中的发展

随着网络的发展和普及,用户数量越来越多,我们的应用服务器和数据库服务器需要同时处理大量的请求和数据计算。然而,我们的应用服务器资源有限,数据库处理请求的能力也存在瓶颈。如何利用有限的资源承载更高的并发,提高应用的吞吐量?比较有效的方法之一就是引入缓存。即通过缓存,快速访问并返回所需数据,从而减少系统交互,提高计算响应能力。

简而言之,尽可能把数据放在最近、最直接、最快的地方,协调好应用获取数据的速度和返回存储数据的速度之差。

二.缓存的应用 2.1 缓存的分类

在目前的应用服务框架中,根据应用服务与缓存的耦合程度,一般分为本地缓存(local cache)和远程缓存(distributed cache/shared cache)。

本地缓存

存在于应用程序中的存储介质,可以直接访问数据,没有网络开销。

优点:它的存储位置和应用在同一个上下文或者进程中,没有过多的网络开销,访问速度非常快。

缺点:1)每个应用实例需要维护一组缓存数据,不共享;2)数据一致性问题,由于更新不及时,缓存中维护的数据可能不正确;3)无法存储大数据,应用重启时数据丢失,没有持久化。

应用场景:1)缓存的数据一般是不经常变化的静态只读数据;2)短时间内改变对业务影响不敏感的数据;

本地缓存的实现:

  • 一般缓存都是键值数据结构,所以需要用字典数据结构来实现。在J Best Network的ava编程中,常用的字典实现有HashMap和ConcurretHashMap。
  • 如果本地缓存需要被不同的服务器线程并发读写,就需要保证线程安全。一般来说,线程安全的ConcurrentHashMap在Java编程中被用作本地缓存。
  • 此外,还有其他更智能的本地缓存实现,比如定时过期、访问重载等功能。典型的实现是Google的guava toolkit的缓存实现。
  • 分布式共享缓存

    脱离了应用,缓存本身就是一个应用,比如美团的Redis、Memcached、Cellar,都属于共享缓存或者共享缓存的实现。

    优点:1)数据共享保证了数据的一致性,各节点通过统一的分布式缓存访问数据,保证了不同节点应用进程的数据一致性;2)数据读写分离,高性能高可用;3)支持大数据量的存储,不受应用进程重启的影响;

    缺点:1)数据跨网络传输,性能低于本地缓存。

    应用场景:具体场景分析一般适用于数据结构简单、高性能读写、分布式共享的数据存储。

    2.2 常见框架组件对缓存的应用 2.2.1 MyBatis的缓存 一级缓存
  • 一级缓存:当多次执行相同查询条件的SQL时,MyB最佳网络atis提供了一种一级缓存的方案来优化查询性能。如果是同一个SQL语句,Best Network会先命中一级缓存,避免直接查询数据库,提高性能。
  • 一级缓存的共享级别:MyBatis中有两个选项,SESSION或者STATEMENT,默认为SESSION级别,即一个MyBatis会话中执行的所有语句都会共享这个缓存。一个是语句级,可以理解为缓存只对当前执行的语句有效。配置:本文地址:http://www.diemang.com/post/24479.html
  • 转载请注明原文地址:https://juke.outofmemory.cn/read/189037.html

    最新回复(0)