Использование в качестве смещения случайного числа Redis c ID - PullRequest
0 голосов
/ 15 января 2020

Я хочу использовать растровое изображение в Redis для хранения битов в аналитических целях. Но для растровых изображений необходимо указать позицию offset, а для cli она выглядит следующим образом:

> SETBIT mykey <offset> 1

Обычно смещение будет значением идентификатора из базы данных, поэтому это уникально и последовательно. Но в моем случае я не могу этого сделать, потому что биты, которые я хочу сохранить, регистрируются не пользователями, а зрителями на веб-странице, поэтому у них нет идентификатора.

Значит, мне нужно сгенерировать случайное число c и использовать его в качестве смещения. Я собираюсь использовать PHP. До сих пор я пробовал это:

$id = hexdec( substr( md5($uniqid()), 0, 10 ) );

Это приводит к целым числам, таким как: 584657569161. Я не хочу использовать такое большое целое число как смещение, если мне не нужно. Каков наиболее эффективный способ создания уникального значения числового значения c, которое будет начинаться с небольшого числа, но затем будет увеличиваться в зависимости от количества уже присутствующих зрителей?

1 Ответ

1 голос
/ 15 января 2020

Вот подход, который может работать для вас:

  1. Сохраните счетчик в Redis и INCR его для каждого нового уникального идентификатора средства просмотра
  2. Отобразите результат, полученный от счетчик идентификатора зрителя с Redis Ha sh - каждое поле является целым числом, а значение - идентификатором зрителя. Используйте это, чтобы преобразовать целочисленные идентификаторы в идентификаторы зрителей.
  3. Повторите шаг 2 с другим Ha sh, где поле - это идентификатор зрителя, а значение - целое число, и используйте его для преобразования зрителя в целочисленные идентификаторы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...