【问题标题】:store single big object in memcached vs multiple keys将单个大对象存储在 memcached 与多个键中
【发布时间】:2018-01-24 13:08:19
【问题描述】:

我在内存缓存中缓存了以下大对象 (20KB) -

Product : 
{
    BasicInfo, //~5KB
    SellerId,  //int
    CityId,    //int
    AdditionalInfo //~15KB
}

这在多个地方被访问-

  1. 在某些地方,只需要 SellerId 或 cityId。
  2. 在某些地方,只需要 basicInfo。
  3. 在某些地方,需要整个对象。

所以我们在第一种和第二种情况下不必要地获取整个对象,而我们只需要一些字节。我应该将这些单独存储在 memcache 中吗(唯一的问题是我需要在更新时使多个键失效)?

有没有更好的方法来处理这些情况?

【问题讨论】:

    标签: memcached


    【解决方案1】:

    这里需要考虑两个方面以及它们之间的权衡。

    1. 是时候访问缓存数据了
    2. 数据的一致性

    存储小粒度数据将如何减少访问时间,即为什么复杂对象需要更多时间?

    1. 为了在内存缓存中存储任何值,必须对其进行序列化和反序列化。对象越复杂,会增加更多@应用端的序列化和反序列化处理。

    2. 在生产环境中,memcache 位于单独的机器中是很常见的(相同的 n/w 或不同的 n/w)。在这种情况下,由于网络 i/o 和往返时间,较大的数据量会增加延迟。

    使用完整对象或多个粒度对象是一种权衡。

    在我们的例子中,我们主要使用缓存来处理缓存数据,这些数据是高频率读取且很少更新的。我们存储粒度级别的对象。

    【讨论】:

      猜你喜欢
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      相关资源
      最近更新 更多