0

私はmysqlから来て、頭をredisに巻き込もうとしています。いくつかのことは非常に明白でしたが、いくつかのことに私は困惑しました。そのようなものをredisで実装するにはどうすればよいですか?

初め

私は一種の先着順予約システムを持っています。ユーザーが特定のページに移動すると、以下のテーブルにクエリを実行し、最初のbadge場所reservedby= 0を返しreservedby、ユーザー ID で更新します。ユーザーが 15 分以内にプロセスを完了しない場合、reservedbyは にリセットされ0ます。ユーザーがプロセスを完了したら、テーブルから行を削除badgeし、ユーザー データと共に保存します。順序は重要です。バッジはリストの上位にあるほど良いので、何らかの方法で予約済みとしてマークするのではなく、削除する場合、15 分以内にプロセスが完了しない場合は、一番上に戻す必要があります。 .

id  | badge | reservedby
------------------------
240 | abc   | 4249
241 | bbb   | 0
242 | rrr   | 0

2番

あまり頻繁には変更されないが、頻繁にクエリされる一連のデータがあります。ページが読み込まれると、選択ボックスに各 が入力されます。color色を選択すると、対応するsmlgが表示されます。

id |  color   |  sm  |  lg
---------------------------
1  |  blue    |  1   |  5
2  |  red     |  3   |  10
3  |  yellow  |  7   |  8

最後に

ユーザーデータを保存する限り、私がやっていることはINCR users、その値hmset user:<INCR users value> badge "aab" joindate "10/30/2013"などを取得することです。通常、それはどのように行われるべきですか?

4

1 に答える 1

0

逆順で

  • IDsはい、それがRedisでインクリメントする方法です。自動化された機能はありません。

  • テーブルが変更される頻度に応じて、月に 1 回の場合は、静的 json ファイルをクライアントに提供し、クライアント側で残りのコードを処理できるようにすることを検討してください。

  • a の使用を検討し、ZSETスコアで一意の値を維持するようにしてください。または、LISTjson 値で a を使用してください。

IMHOあなたの予約システムの内部はひどいものです。複数のhttpリクエストを送信するだけで、サイトのオファーを簡単に予約できます。他の実稼働Webサイトには限られたオファーがあり、支払いが成功して処理されるまで、最初に支払うユーザーに部屋があります。続行し、失敗すると元に戻ります。

于 2013-10-31T06:58:50.180 に答える