2017-04-01 3 views
0

私たちのDBは主に読み込みですが、私たちのビデオには "ビュー数"と "サムズアップ/サムズダウン"を追加します。redisで "ビュー数"を扱う方法

mysqlで増分ビューをテストしたところ、データベースがデッドロックし始めました。

私はビューの数を保持するredis DBを持つことでこの問題を処理することを考えていましたが、キーが期限切れになった時点でDBに書き込みます。しかし、私は通知が一貫していないと聞いて、私はビューのデータを失うしたくない。

これについては、より良い方法がありますか?または、赤字通知が矛盾しているという話は真実ではありません。

おかげで、

サミー

答えて

0

Redisの鍵空間通知は一致しているが、配信は保証されません。

データを失いたくない場合は、カウンタを手動で期限切れにする独自のバックグラウンドプロセスを実装します。つまり、MySQLにコピーしてRedisから削除します。

この遅延誘発パターンを実装するには、いくつかのアプローチがあります。たとえば、HINCRBYの値フィールドと有効期限のロジック目的のタイムスタンプフィールドの2つのフィールドを持つRedisハッシュを使用できます。あなたのバックグラウンドプロセスは、SCANキースペースを使って古いキーを識別することができます。

もう1つの方法は、ソートセットを使用してカウンタを管理する方法です。場合によっては、各メンバーのスコアにTTLとカウントの両方をエンコードするソートセットを1つだけ使用することもできますが(フロートの整数部分と小数部分をそれぞれ使用)、ほとんどの場合、2つのソートセットを使用する方が簡単です他の毛皮の値。

+0

私はこれを試してみましょう!ありがとうございました! –

+0

特定のキーをスキャンする方法はありますか?またはすべてをスキャンして個々のキーを検索するだけですか –

関連する問題