分布式缓存系统 - 目的?

时间:2015-03-07 23:45:25

标签: caching distributed-caching

对于缓存的概念我真的很陌生,我需要一些指导

  1. 基于Web的缓存(例如ehCache或memcache)的用途是什么?
  2. 据我所见,它们用于临时存储,但为什么有人想暂时存储一些数据呢?
  3. 为什么在nosql或关系数据库上使用缓存?
  4. 与建筑设计决策相关的任何利弊都是有用的。

1 个答案:

答案 0 :(得分:0)

  1. 使用缓存是因为它们。为实现此目的,缓存通常将其所有数据存储在内存中,以便可以避免昂贵的磁盘读取。查询关系数据库通常涉及到其他表的一个或多个连接,这可能增加查询的复杂性(对于数据库)并减慢其执行速度。使用缓存,您可以按照应用程序所需的确切形式存储数据的非规范化表示,即,如果要向用户显示订单列表,则不必关心将订单头数据与缓存时订购行数据,因为所有数据都一起显示给用户。

  2. 缓存数据是根据持久性应用程序数据构建的,因此无需保留缓存数据,因为它可以从应用程序数据重建,实际上每次应用程序数据更改时都会重建缓存数据。如前所述,缓存系统通常将所有数据保存在内存中,因此可存储的数据量受可用RAM的限制。这导致诸如LRU(最近最少使用)之类的高速缓存驱逐策略,其去除不经常访问的数据,从而可以优先考虑更频繁访问的数据。

  3. 再次,表现。但是,您需要评估完整用例以确定什么是正确的解决方案。如果您的数据具有高速率的修改,那么缓存可能不会比关系数据库或nosql数据库提供太多好处,因为数据在缓存中的活动时间不够长。请记住,这不是两种情况,您通常使用缓存以及关系数据库或nosql数据库作为性能增强。

  4. 关于体系结构,请记住大多数缓存都是键值存储,并且不支持关联操作(如连接)。因此,如果您的数据是高度相关的,那么缓存可能很难适应,因为您需要设置复杂的依赖关系图,以便在相关实体发生更改时逐出缓存数据。