如何正确地将这些数据存储在redis中?

时间:2012-12-13 14:18:11

标签: json mongodb redis schema

收藏:年

条目1

{
  _id: ObjectId("4f2fd2ee4516ed6ceebbe17c"),
  shows: [
    {
      day: 1,
      hasVideos: false,
      month: 1,
      showid: 1252187000,
      venue: "Someplace"
    },
    {
      day: 2,
      hasVideos: false,
      month: 2,
      showid: 1252188010,
      venue: "Philly"
    }
  ],
  year: 1988
}

第2条

{
  _id: ObjectId("4f2fd2ee4516ed6ceebbe17c"),
  shows: [
    {
      day: 19,
      hasVideos: false,
      month: 1,
      showid: 1252187999,
      venue: "Hunt's"
    },
    {
      day: 21,
      hasVideos: false,
      month: 1,
      showid: 1252188030,
      venue: "Hunt's"
    }
  ],
  year: 1987
}

现在,我在redis商店中创建了一个名为years的集合。这是以year:1988形式填充的字符串。我创建了一个名为year:1988的哈希。但这是错误的。我想要嵌套这些节目哈希的数组。

如何嵌套两个深度的哈希?我应该继续使用模式并以1988:01:011988:02:02的形式创建一个集来存储第一个条目吗?

由于

1 个答案:

答案 0 :(得分:1)

如果您只想按日期(或年份)查询,则应使用排序集作为查找。

Sorted Sets on redis.io

您要做的是使用节目的ID或序列化的节目作为成员以及节目播出的日期,或者作为得分进行。

请注意,如果您只存储节目ID,则需要执行另一次查找以获取节目的详细信息。

现在您可以执行范围查询,这似乎是您想要的:

ZRANGEBYSCORE

ZREVRANGEBYSCORE