我需要您对我的项目的 Redis 数据类型提出建议。该项目是一个 torrent-tracker ( ruby
, simple sinatra-based
),具有纯内存数据存储,用于存储有关节点的当前信息。我觉得这就是 Redis 的用途。但我坚持为此选择合适的数据类型。现在我倾向于以下设置:
用于
list
播种机。实际上,我最好需要一个环形缓冲区来获取一系列播种机(具有给定的大小和起始位置)并为下次保存新的起始位置。用于
sorted set
水蛭。每个 leecher 的得分是这样的downloaded/(downloaded+left)
,所以我还可以为任何特定情况提取一个范围。
set 和 list 中的所有字符串值都是对等数据的字符串(编码)表示。
我在上面的设置中实际上缺少的是:
需要为播种机存储偏移量,因此数据访问需要同步。
在列表中查找特定播种机的未知方法。在这里我可能会从中受益,
set
但我将无法一次提取一系列项目。(一般问题)集合/列表成员需要 TTL(如果客户端在此之前关闭而未发送任何数据)。可能的选项是使每个
peer
字符串键/值(字符串或哈希),给它TTL,订阅销毁并在相应的列表或集合中删除它。
你有什么建议?有什么实用的建议吗?