LevelDB をストレージ エンジンとして使用し、memcached をキャッシュ レイヤーとして使用する分散ストレージ プロジェクトには、1 つのシナリオがあります。キーを使用するクエリの 95% がストレージ エンジンに存在しません。
memcached レイヤーで、キーが見つからない場合は、LevelDB にクエリを実行します。
LevelDB では、デフォルトのブルーム フィルターを使用してキーが存在するかどうかを判断しますが、それでも誤検知率は 1% です。パーセンテージが 1% であるため、クライアントが許容できない IO を介して値を要求する必要があります。(95% のキーが存在しません)
キーが存在しないかどうかを知るためのより良い解決策はありますか?
更新: 1. キーは毎日生成されます (ユーザー ID + 日付)。一度キーを取得できないと、クライアントは値をストレージ レイヤーに入れます。2. クライアントは読み取り遅延 (TP99) < x ms (クライアントは遅延の影響を受けやすい) を望んでいます