首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分布式缓存系统-用途?

分布式缓存系统-用途?
EN

Stack Overflow用户
提问于 2015-03-07 23:45:24
回答 1查看 89关注 0票数 0

我对缓存的概念非常陌生,我需要一些关于

  1. 基于web的高速缓存(如ehCache或memcache)的用途是什么?
  2. 据我所见,它们被用于临时存储,但是为什么有人想暂时存储一些数据呢?
  3. 为什么在nosql或关系数据库上使用缓存?

任何与建筑设计决策相关的利与弊都是有用的。

EN

回答 1

Stack Overflow用户

发布于 2015-07-14 05:20:15

  1. 使用缓存是因为它们速度快。为了实现这一点,缓存通常将其所有数据存储在内存中,这样就可以避免昂贵的磁盘读取。查询关系数据库通常涉及到其他表的一个或多个联接,这会增加查询的复杂性(对于数据库),并减慢其执行速度。通过缓存,您可以将数据的非规范化表示形式存储在应用程序所需的确切形式中,也就是说,如果要向用户显示订单列表,则在缓存时不关心将订单头数据与订单行数据分开,因为所有这些数据都是为用户显示的。
  2. 缓存的数据是从持久的应用程序数据构建的,因此不必持久化缓存数据,因为它可以从应用程序数据重新生成,而且实际上每次应用程序数据更改时都会重新生成。如前所述,缓存系统通常将所有数据保存在内存中,因此可以存储的数据量受到可用RAM的限制。这导致缓存驱逐策略,如LRU (最近使用最少),这些策略删除不经常访问的数据,以便能够对更频繁访问的数据进行排序。
  3. 再来一次表演。然而,您需要评估您的全部用例,以确定什么是正确的解决方案。如果您的数据有很高的修改率,那么缓存可能无法提供比关系数据库或nosql数据库更多的好处,因为这些数据在缓存中的寿命不会足够长,无法使用。请记住,这不是一种双/或两种情况,您通常会使用缓存以及关系数据库或nosql数据库来增强性能。

关于体系结构,请记住,大多数缓存都是关键值存储,不支持诸如联接之类的关系操作。因此,如果您的数据是高度关系的,那么缓存可能是一个困难的匹配,因为您将需要设置复杂的依赖关系图,以便在相关实体更改时驱逐陈旧的缓存数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28921444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档