Redis считая с нарезкой окна - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь использовать Redis Cluster для поддержки подсчёта окон в режиме реального времени.Я хочу иметь возможность считать за определенный период, скажем, ∆t

Допустим, я использую Sorted set для резервного копирования счетчиков.Для данного ключа каждый член может быть парой, состоящей из timestamp и 1

Триггер для my-key срабатывает при 1558442159065, 1558442159066, 1558442159067 имногие другие:

zadd my-key 1558442159065 1
zadd my-key 1558442159066 1 
zadd my-key 1558442159067 1

...

zadd my-key future-ts

Я могу рассчитывать с разрешением в миллисекунды, что является фантастическим.Я насчитал всего spawned = future-ts - 1558442159065 миллисекунд.Как долго это?Это зависит от отношения spawned / ∆t:

  • Если оно меньше или равно единице, мне нужно продолжать считать
  • Если его много больше единицыЕсть несколько старых записей, которые я могу сделать недействительными.

Я вижу три больших недостатка для этого подхода:

  • Это может быть столкновение в миллисекунду для zadd my-key ts 1, потому что этоявляется многопоточной средой для записи в Redis
  • Значение члена отсортированного набора всегда равно 1, поэтому избыточно
  • Когда я могусделать недействительными старые записи?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...