Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Use o Redis para gerar um ID exclusivo de um intervalo limitado


Que tal usar Bitmaps para gravar, para cada possível nbr , se esse valor é usado ou não?

Para registrar que um valor foi obtido, use SETBIT :
SETBIT key [nbr] 1

Para encontrar um nbr gratuito use BITPOS :
BITPOS key 0

Para evitar condições de corrida, você deve certificar-se de que seu get-and-set seja atômico. [O OP aborda isso em uma pergunta de acompanhamento.]

Isso exigirá muito pouca memória (8K bytes para 65.536 valores possíveis). BITPOS é O(n), mas é improvável que seja um problema real.