Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Verwenden Sie Redis, um eine eindeutige ID aus einem begrenzten Bereich zu generieren

Wie wäre es mit Bitmaps zum Aufzeichnen, für jeden möglichen nbr , ob dieser Wert verwendet wird oder nicht?

Um aufzuzeichnen, dass ein Wert genommen wird, verwenden Sie SETBIT :

SETBIT key [nbr] 1

So finden Sie eine kostenlose nbr Verwenden Sie BITPOS :

BITPOS key 0

Um Rennbedingungen zu vermeiden, sollten Sie sicherstellen, dass Ihr Get-and-Set atomar ist. [Das OP spricht dies in einer Folgefrage an.]

Dies erfordert sehr wenig Speicher (8 KB für 65536 mögliche Werte). BITPOS ist O(n), aber das ist wahrscheinlich kein wirkliches Problem.