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.