sql >> Databasteknik >  >> NoSQL >> Redis

Använd Redis för att skapa unika ID från ett begränsat intervall

Vad sägs om att använda bitmappar för att spela in, för alla möjliga nbr , om det värdet används eller inte?

För att registrera att ett värde har tagits använd SETBIT :

SETBIT key [nbr] 1

För att hitta en gratis nbr använd BITPOS :

BITPOS key 0

För att undvika tävlingsförhållanden bör du se till att din get-and-set är atomär. [OP tar upp detta i en följdfråga.]

Detta kommer att kräva mycket lite minne (8K byte för 65536 möjliga värden). BITPOS är O(n), men det är osannolikt att det är ett verkligt problem.




  1. Mongo update array element (.NET drivrutin 2.0)

  2. MongoDB $binarySize

  3. Det bästa mönstret för att hantera asynkron looping i Node.js

  4. MongoDB db.collection.count()