local c = redis.call("HGET", KEYS[1], ARGV[1])
if c == nil or tonumber(c) <= -tonumber(ARGV[2]) then
redis.call("HDEL", KEYS[1], ARGV[1])
return 0
end
redis.call("HINCRBY", KEYS[1], ARGV[1], ARGV[2])
local updatedCount = redis.call("HGET", KEYS[1], ARGV[1])
return tonumber(updatedCount)
Кеш внутри сервиса
Оповещение об инвалидации:
- gossip
- message queue
- key-value
Расхождение часов
ts := time.Now().UTC()
claims := &jwt.StandardClaims{
IssuedAt: ts.Add(-deviateIssuedAt).Unix(),
ExpiresAt: ts.Add(validTTL).Unix(),
}
Шардирование
За определённое состояние должен отвечать только один сервис
- таймеры
- изменения в бд
- акторы