mysql - 在一个多人共享的文件夹内, 创建文件夹/文件, 名字重复加数字后缀有没有好的算法
伊谢尔伦
伊谢尔伦 2017-04-17 16:46:40
0
4
507
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(4)
刘奇

「写真」を例に挙げると、Redis のビットマップの使用はこの問題の解決に非常に適しています

  1. 「Photo」はキーのビットマップを作成します。値 1 のビットは、使用されていることを表します (作成する必要はなく、直接クエリするだけです)

  2. 0 で左端のビットのインデックスを検索します: bitpos "photo" 0

  3. 見つかったインデックスは最小の数値ギャップです

注: 複数のサーバーとマルチスレッドが同時に存在する場合は、Redis によって実装された分散ロックの使用を検討するか、watch コマンドの使用を検討できます。
疑似コードは次のとおりです

リーリー
いいねを押す +0
PHPzhong

ハッシュ テーブルはファイル名をキーとして使用し、[1..MaxNum] の順序付きリストを生成するため、MaxNum は適切と思われる数値を取得します。ハッシュテーブルを同期します。
ファイルを作成するたびに、ハッシュ テーブルをチェックしてキーがあるかどうかを確認し、キーがある場合は list.pop の最初の値を使用します。
ファイルを削除するたびに、file() 内の数値をリストに戻します
毎回、過剰なデータがファイル システム (データベースなど) に保存される可能性があります。ハッシュ クエリではデータが見つかりません。ファイル システムにアクセスして呼び出しを見つける必要があります。メモリ ページング キャッシュ メカニズムに似ています。

いいねを押す +0
伊谢尔伦

リーリー

いいねを押す +0
伊谢尔伦

最も単純なアイデアは、2 つのデータセットを維持することです
疑似コード

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート