2

初めての Redis データベースを設計しました。フィードバック、提案、またはヒントが欲しいです。

概要:

私の redis データベースには記事が保存されており、後でいいね、作成日、更新日、作成者などで並べ替えることができます...

記事には「アイテム」も含まれており、どの記事に少なくとも 1 つのアイテムが含まれているかを判断する必要もあります。

創造

新しい記事が作成されると、その ID をさまざまなキーに書き込みます

ZADD 'articles:created' タイムスタンプ ArticleID

ZADD 'articles:updated' タイムスタンプ ArticleID

ZADD 'articles:likes' 0 ArticleID

SADD 'user:USERID:articles' ArticleID

記事が更新されるたびに

ZADD 'articles:updated' タイムスタンプ ArticleID

アイテムが記事に追加されるたびに

ZADD 'articles:itemCount' ItemCount ArticleID

アイテムが削除され、アイテムが残っていない場合は、そのメンバーを削除するだけです

ZREM 'articles:itemCount' ArticleID

したがって、ソートに関しては、次のようにします。

  1. 「articles:likes」と「articles:updated」で ZUNIONSTORE を実行します
  2. 結果を使用して、結果と 'articles:itemCount' に対して ZINTERSTORE を実行します。
  3. その結果、ZREVRANGEBYSCORE を実行するだけです。

これはすべて機能し、私がやりたいことを見つけて実行しますが、私は Redis を初めて使用し、提案と改善を受け入れます。

心から、

-- ジェームズ

4

1 に答える 1

0

私はあなたの解決策に同意します。

改善のために、次のことを考えてください。Transaction

創造

マルチ

ZADD 'articles:created' タイムスタンプ ArticleID

ZADD 'articles:updated' タイムスタンプ ArticleID

ZADD 'articles:likes' 0 ArticleID

SADD 'user:USERID:articles' ArticleID

エグゼク

于 2012-06-28T04:21:44.910 に答える