Возвращаемое значение PFADD в Redis

Согласно документации Redis по команде PFADD:

 Return value
 Integer reply, specifically:
 1 if at least 1 HyperLogLog internal register was altered. 0 otherwise.

Может ли кто-нибудь объяснить следующие два момента?

  1. Означает ли это, что PFADD вернет «1», если счетчик действительно увеличился на 1? Гарантируется ли, что после запуска PFADD новый PFCOUNT будет равен PFCOUNT(before) + output of PFADD? Другими словами, может ли однопоточный клиент отслеживать счетчик, используя только вывод PFADD?
  2. Когда PFADD возвращает «0» или «1», они переводятся как «попадание в кеш» и «промах кеша» соответственно?

person mjalajel    schedule 24.06.2014    source источник


Ответы (1)


Означает ли это, что PFADD вернет «1», если счетчик действительно увеличился на 1?

No.

Возвращаемое значение чисто логическое, т. е. оно указывает только на то, был ли базовый HyperLogLog модифицирован или нет.

Гарантируется ли, что после запуска PFADD новым PFCOUNT будет PFCOUNT(before) + output of PFADD?

Нет, так как вывод PFADD не представляет счет (см. выше).

При этом вы можете использовать вывод PFADD в качестве триггера для повторного вызова PFCOUNT, как объяснено antirez. в исходном сообщении в блоге:

Это интересно для пользователя, поскольку по мере добавления элементов вероятность того, что элемент действительно модифицирует какой-либо регистр, уменьшается. Тот факт, что API может давать подсказки о том, что доступна новая мощность, позволяет программам непрерывно добавлять элементы и извлекать приблизительную мощность только тогда, когда доступен новый.

В конце концов:

Когда PFADD возвращает «0» или «1», они переводятся как «попадание в кеш» и «промах кеша» соответственно?

Нет. Как указано выше, это указывает только на то, что доступно новое количество элементов.

person deltheil    schedule 25.06.2014
comment
Последующее уточнение: можно ли предположить, что когда PFADD возвращает 1 (т. е. государственные регистры были изменены), новый элемент был добавлен с точностью 99%? - person Dickey Singh; 30.07.2015