在简单的torrent跟踪器服务中选择Redis数据类型以进行高级数据操作

时间:2013-07-28 15:40:33

标签: ruby redis

我需要为我的项目提供有关Redis数据类型的建议。该项目是一个torrent跟踪器(ruby,简单sinatra-based),具有纯内存数据存储,用于存储有关对等体的当前信息。我觉得这就是Redis的制作方式。但我坚持为此选择合适的数据类型。现在我倾向于以下设置:

  1. list用于播种机。实际上我最好需要一个环形缓冲区来获得连续的播种机范围(具有给定的大小和起始位置),并在下次保存新的起始位置。

  2. sorted set用于leechers。每个leecher的得分为downloaded/(downloaded+left),因此我也可以为任何特定情况提取范围。

  3. set和list中的所有字符串值都是对等数据的字符串(bencoded)表示。

    我在上面的设置中实际缺少的是:

    1. 为播种机存储偏移量的必要性,因此数据访问需要同步。

    2. 在列表中查找特定播种机的未知方法。在这里,我可以从set中受益,但之后我将无法一次性提取一系列项目。

    3. (一般问题)需要设置/列表成员的TTL(如果客户端在此之前关闭但未发送任何数据)。可能的选择是使每个peer成为普通的字符串键/值(字符串或散列),给它TTL,在销毁时订阅并在相应的列表或集合中删除它。

    4. 你有什么建议?有什么实际建议吗?

0 个答案:

没有答案