Каков наилучший способ узнать недостающие числа в sortedset в Redis?

#redis

#redis

Вопрос:

Если у меня есть SortedSet в Redis, который содержит только целочисленные значения, скажем, от 1 до 2 миллионов, есть ли эффективный способ быстро определить недостающие целочисленные значения в SortedSet? Или для такого типа поиска лучше использовать другую структуру данных, помимо SortedSet?

Ответ №1:

Вы можете попробовать битовые операции: setbit. Вместо того, чтобы сохранять целое число в Redis, вы можете использовать целое число в качестве битовой позиции / смещения. Одним словом, используйте a bitmap для хранения существования целого числа.

При попытке сохранить целое число установите соответствующий бит с setbit помощью command . Если вы хотите проверить пропущенные целые числа, получите значение и проверьте позиции, в которых находятся значения битов 0 .

Хранить целые числа

 // store 2
setbit key 2 1
// store 123
setbit key 123 1
// store N
setbit key N 1
  

Найдите недостающие целые числа

 // get value
get key
// Check each bit of the returned value.
// If the bit value is 0, the position/offset of this bit is a missing integer