小伙看你根骨奇佳,潜力无限,来学PHP伐。
「写真」を例に挙げると、Redis のビットマップの使用はこの問題の解決に非常に適しています
「Photo」はキーのビットマップを作成します。値 1 のビットは、使用されていることを表します (作成する必要はなく、直接クエリするだけです)
0 で左端のビットのインデックスを検索します: bitpos "photo" 0
見つかったインデックスは最小の数値ギャップです
注: 複数のサーバーとマルチスレッドが同時に存在する場合は、Redis によって実装された分散ロックの使用を検討するか、watch コマンドの使用を検討できます。疑似コードは次のとおりです
ハッシュ テーブルはファイル名をキーとして使用し、[1..MaxNum] の順序付きリストを生成するため、MaxNum は適切と思われる数値を取得します。ハッシュテーブルを同期します。 ファイルを作成するたびに、ハッシュ テーブルをチェックしてキーがあるかどうかを確認し、キーがある場合は list.pop の最初の値を使用します。 ファイルを削除するたびに、file() 内の数値をリストに戻します毎回、過剰なデータがファイル システム (データベースなど) に保存される可能性があります。ハッシュ クエリではデータが見つかりません。ファイル システムにアクセスして呼び出しを見つける必要があります。メモリ ページング キャッシュ メカニズムに似ています。
リーリー
最も単純なアイデアは、2 つのデータセットを維持することです疑似コード
「写真」を例に挙げると、Redis のビットマップの使用はこの問題の解決に非常に適しています
「Photo」はキーのビットマップを作成します。値 1 のビットは、使用されていることを表します (作成する必要はなく、直接クエリするだけです)
0 で左端のビットのインデックスを検索します: bitpos "photo" 0
見つかったインデックスは最小の数値ギャップです
注: 複数のサーバーとマルチスレッドが同時に存在する場合は、Redis によって実装された分散ロックの使用を検討するか、watch コマンドの使用を検討できます。
リーリー疑似コードは次のとおりです
ハッシュ テーブルはファイル名をキーとして使用し、[1..MaxNum] の順序付きリストを生成するため、MaxNum は適切と思われる数値を取得します。ハッシュテーブルを同期します。
ファイルを作成するたびに、ハッシュ テーブルをチェックしてキーがあるかどうかを確認し、キーがある場合は list.pop の最初の値を使用します。
ファイルを削除するたびに、file() 内の数値をリストに戻します
毎回、過剰なデータがファイル システム (データベースなど) に保存される可能性があります。ハッシュ クエリではデータが見つかりません。ファイル システムにアクセスして呼び出しを見つける必要があります。メモリ ページング キャッシュ メカニズムに似ています。
リーリー
最も単純なアイデアは、2 つのデータセットを維持することです
リーリー疑似コード