Redis
 sql >> Base de données >  >> NoSQL >> Redis

Utilisez Redis pour générer un identifiant unique à partir d'une plage limitée

Que diriez-vous d'utiliser Bitmaps pour enregistrer, pour chaque nbr possible , que cette valeur soit utilisée ou non ?

Pour enregistrer qu'une valeur est prise, utilisez SETBIT :

SETBIT key [nbr] 1

Pour trouver un nbr gratuit utiliser BITPOS :

BITPOS key 0

Pour éviter les conditions de course, vous voudrez vous assurer que votre préparation est atomique. [Le PO aborde cela dans une question de suivi.]

Cela nécessitera très peu de mémoire (8K octets pour 65536 valeurs possibles). BITPOS est O(n), mais il est peu probable que ce soit un vrai problème.