在Redis中建模数据

时间:2012-09-19 16:44:16

标签: memory-management redis

我正在建立一个系统,可以在Redis中实时跟踪许多计数器。每个计数器基本上都是特定网址上显示的广告关键字的展示次数和转化详情。

即。如果特定网址上显示了10个关键字,我需要针对展示次数和转化次数更新每个关键字的计数。在网址的每次展示中,可能会显示不同的10个关键字。

即。我需要的基本数据模型就像

  • > URL =>

     k1 =>
            impression => 2
            conversion => 1
     k2 =><br>
            impression => 100
            conversion => 8
     .
     .
     k100 (max around 100)</li>
    
         

  我知道Redis没有嵌套哈希,所以我不能存储2级哈希,如上所示。

解决此问题的最佳方法是什么?

我想过将k1-impression和k1转换结合起来并将其作为单个字段

即喜欢

  • url =&gt;

       k1-impression => 100
       k1-conversion => 3
       .<br>
       . so on</li>
    
         

  但问题是“k1”,“k2”等的长度很重要(120-150字节),如果可能的话,我不想复制这些数据以节省内存。

我将如何解决这个问题?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您的关键字长度足以让您担心,那么您应该将它们标准化。制作一个keyword -> id的哈希值和一个id -> keyword的哈希值,用于编码和解码它们。然后,您可以使用url => {kw_id:impressions => 1123, kw_id:conversions => 28}形式的每个网址哈希值。当你开始需要制作关键词的索引时,这也将很好地为你服务,例如,当你需要在所有网址上显示前10个表现最好的关键词时,你就会很快。