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

时间:2010-02-22 13:43:52

标签: memcached

让我们假设我们有某种物品,这些物品可以由用户评定。我应该将项目评级和项目数据存储在不同的memcache密钥中吗?

从逻辑上讲,我们应该保持对主要商品数据的评级,因为商品数据变化很少,但评级更改更频繁。当某人对该项目进行评分时,我应该只对项目评级密钥无效,而不是整个项目。

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

  1. 我正在为此页面获取项目ID = 1 memcache“query”
  2. 我正在获取页面上每个项目ID的项目数据= 100 memcache“queries”
  3. 我正在获取页面上每个项目ID的项目评级= 100 memcache“queries”
  4. 总计: 201 memcache“查询”

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

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

    谢谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果您将单独保存项目评级,您将无法通过它进行排序。最好使用mysql innodb表(如果你真的需要按等级排序)为此目的(它被优化以适应高并发性和高写入负载)