【问题标题】:Searching/selecting query in cache在缓存中搜索/选择查询
【发布时间】:2015-04-27 15:46:39
【问题描述】:

我已经使用缓存很长时间了。我们针对某个键存储数据,并在需要时从缓存中获取它。我知道 StackOverflow 和许多其他网站严重依赖缓存。我的问题是他们总是使用键值机制进行缓存还是在缓存中形成一些类似 sql 的查询?例如,我想查看上周的报告。该报告的内容每天都会有所不同。我是否需要每天存储不同的报告(其中一天作为键),或者我可以通过形成一些跨不同键聚合结果的查询来获得此结果?是否有任何缓存产品(如 redis)提供此功能?

提前致谢

【问题讨论】:

    标签: caching redis


    【解决方案1】:

    缓存始终作为键值哈希表完成。这就是它保持如此之快的原因。如果你在做查询,那么你就没有在做缓存。

    您可能想问的是...您的数据库中可能有一个包含汇总报告数据的表格。您可以查询该预先计算的表格。

    【讨论】:

    • Redis 确实有一些其他数据类型,而不仅仅是一个字符串值。它有列表和范围之类的东西。但我认为这不是您要寻找的。​​span>
    • 我们需要在报告中使用缓存。可以看到今天、上周、上个月等的报告。因此,相同的数据集是不同报告的一部分。数据集每秒流动。一个数据集属于一个产品,并且还可以查看每个产品的报告。任何缓存解决方案都可以在这种情况下提供帮助吗?
    【解决方案2】:

    缓存(例如 memcached )快速的原因之一是其数据访问和查询协议的简单性。 您添加的功能越多,您将不得不在效率部分做更多的权衡。 “缓存”数据库中的完整 SQL 引擎不是一个好的设计。尽管您可以利用 Redis 等面向数据结构的数据库来设计缓存数据以满足您的查询需求。例如:每个日期一个集合或一个哈希。

    更进一步,您可以使用诸如 MongoDb 或 memsql 之类的数据库,它们非常快并且具有丰富的查询支持。因此,偶尔汇总报告不会成为问题。 但是,作为设计决策,您将不得不接受它们的缓存吞吐量不会像 memcached 或 redis 那么多。

    【讨论】:

      猜你喜欢
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      相关资源
      最近更新 更多