【问题标题】:Redis, Playlists with pointers to movies, Is this possible?Redis,带有电影指针的播放列表,这可能吗?
【发布时间】:2020-08-02 15:22:31
【问题描述】:

我有一个电影收藏,大约 15 万部,我有几个播放列表,其中几部电影多次出现。

我想在 Redis 上缓存电影和播放列表。

我需要让播放列表仅保存对电影的引用,因此当我检索播放列表时,它会带来引用的电影,但如果我更改电影,它将在所有播放列表中更改。

我不想检索只有 id 的播放列表,然后必须再次按 id 检索每部电影,有没有办法直接在一个查询中执行此操作?就好像它是一个指针......

谢谢!

【问题讨论】:

    标签: redis redisgears


    【解决方案1】:

    在我看来,您有两个选择:

    1. 编写一个 lua 脚本,为给定的播放列表提供该播放列表中的所有电影。这种方法的主要缺点是它不适用于集群,因为电影可能位于与播放列表不同的分片上。
    2. 使用 RedisGears (https://github.com/RedisGears/RedisGears)。在一条 python 行中,您可以完全按照您的需要进行操作,并且它将在集群上完美运行。它看起来像这样(假设播放列表是位于 redis 哈希中的电影的 redis 列表):

      GB().flatmap(lambda r: r).repartition(lambda r:r).map(lambda r: execute('hgetall', r)).run('')

      • 平面图 - 每部电影都有记录
      • 重新分区 - 所以每个电影记录都会转到它所在的分片
      • map - 执行 hgetall 并获取电影数据
      • run - run 会自动收集所有分片的所有数据并返回。

    【讨论】:

      猜你喜欢
      • 2013-04-07
      • 1970-01-01
      • 2014-05-29
      • 2019-01-27
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多