完了する必要がある現在のタスクのリストをユーザーに提供するプロジェクトがあります。すべてのユーザーが任意のタスクを完了することができるため、一度に 1 人のユーザーだけがタスクに取り組んでいることを確認するには、タスクを「ロック」できる必要があります。私はこれに SignalR を使用しているので、ユーザーはタスクのロックを要求し、成功した場合 (つまり、他の誰もロックしていない場合) は、必要な詳細情報にアクセスできます。
私の問題は、ロックされたタスクのリストを保存する方法です。当初の計画は、追加のビット フィールド「IsLocked」を Task テーブルに追加し、ユーザーがロックを要求したとき、およびタスクのロックが解除されたときにこれを更新するという単純なものでした。ただし、約 300 人の同時ユーザーがいて、1 つのタスクにかかる時間はわずか 3 ~ 4 分です。これは、データベースに対する膨大な数の追加の (そして小さな) クエリを意味します。そのため、タスク ID のリストを「lockedTasks」リストに格納するだけのメモリ内ストレージについて疑問に思っていました。
私はキャッシュの使用を検討していましたが、これを行うための最良の方法、またはより良い代替手段が存在するかどうかさえわかりません. 誰かがこれについて経験を持っているなら、いくつかのアドバイスは素晴らしいでしょうありがとう