私はRedisがキャッシュドライバとして使用されるLaravel 5.2プロジェクトを持っています。データを失うことなく複数の接続と複数のincrコールをRedisする
ありRedisのを接続して、値を増加して設定するには、このメソッドが呼び出されるたびに値を追加する方法を持っているコントローラは、ちょうど
$redis = Redis::connection();
$redis->incr($value);
$redis->sadd("set", $value);
のように、である。しかし問題は、時には多くがあるということです2つの呼び出し元が$value
が2のときにこのメソッドを呼び出すと、incr
の後には3になりますが、基本的には2つ後になります(2つ後になる必要があるため)、このメソッドの呼び出しと同時に多くの呼び出しが発生し、データが失われます。
私はRedisトランザクションを使用することを考えましたが、multi
コマンドを呼び出していつキューを開始するべきか、いつexec
になるのか想像できません。
また、incr
とsadd
を別のセットの文字列として収集し、cron job
でそれらを処理するというアイデアがありましたが、あまりにも多くのRAMを必要とします。
どのような提案でも、どのようにしてこのデータ損失を回避できますか?