Я пытаюсь использовать 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
, поэтому избыточно - Когда я могусделать недействительными старые записи?