#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