Redis
 sql >> Database >  >> NoSQL >> Redis

Usa Redis per generare un ID univoco da un intervallo limitato

Che ne dici di usare le bitmap per registrare, per ogni possibile nbr , indipendentemente dal fatto che quel valore venga utilizzato o meno?

Per registrare che viene preso un valore, utilizzare SETBIT :

SETBIT key [nbr] 1

Per trovare un nbr gratuito usa BITPOS :

BITPOS key 0

Per evitare condizioni di gara, ti consigliamo di assicurarti che il tuo get-and-set sia atomico. [L'OP affronta questo in una domanda di follow-up.]

Ciò richiederà pochissima memoria (8 K byte per 65536 valori possibili). BITPOS è O(n), ma è improbabile che sia un problema reale.