代码之家  ›  专栏  ›  技术社区  ›  Kirzilla

我应该将项目评级和项目数据存储在单独的memcache密钥中吗?

  •  0
  • Kirzilla  · 技术社区  · 15 年前

    假设我们有一些项目,这些项目可以由用户进行评级。我应该将项目分级和项目数据存储在不同的memcache密钥中吗?

    从逻辑上讲,我们应该将评级从主要项目数据中排除,因为项目数据很少更改,但评级更改更频繁。当有人给项目打分时,我应该只让项目评分键失效,而不是整个项目失效。

    为什么我要问这个问题?例如,我每页有100个项目……

    1. 我正在获取此页的项目ID=1 memcache“查询”
    2. 我正在获取page=100 memcache“查询”中每个项目id的项目数据
    3. 我正在为page=100 memcache“查询”上的每个项目id获取项目评级

    总数: 201 memcache“查询”

    将项目评级和主要项目数据存储在一个键中,我们将只获得 101个memcache“查询” .

    那么,最佳实践是什么? 我真的很担心每页memcache“查询”的数量。 或者我不该担心?

    谢谢您。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Kirzilla    15 年前

    memcache允许将键数组放入get()方法。

    (俄语) http://highload.com.ua/index.php/2009/08/05/memcache-multi-get-%D0%B7%D0%B0%D1%87%D0%B5%D0%BC/

    Fetched 15000 objects with standard get in 0.47441411018372s - using get
    Fetched 15000 objects with multiple get in 0.023789882659912s - using multi get
    
        2
  •  0
  •   Everyz    15 年前

    如果要单独保存项目分级,则无法按其进行排序。为此,最好使用mysql innodb table(如果你真的需要按等级排序的话)(它被优化为在高并发性和大写负载下工作)