View Source Changelog

2.0.0 (2026-07-10)

Port to Hammer 7 (breaking).

  • The backend is now Hammer.EredisCluster, a Hammer v7 __before_compile__ backend used via use Hammer, backend: Hammer.EredisCluster — the v6 GenServer backend Hammer.Backend.EredisCluster (and the Hammer.Backend behaviour it implemented) is gone.
  • No process in the request path anymore: hit/3,4, inc/2,3, set/3, get/2 and expires_at/2 talk to eredis_cluster's pools directly (pipelined INCRBY + PEXPIREAT). The process started by start_link/1 only establishes the cluster connection.
  • Deny tuples now carry the retry timeout in ms ({:deny, retry_ms}), not the limit, per the Hammer v7 contract; there is no {:error, _} return — Redis errors raise.
  • Keys keep the {key} hash-tag slotting (all windows of a key on one cluster slot) but the key layout changed to prefix:{key}:window; v6 keys are simply left to expire.
  • delete_buckets/2 is gone (v7 has no equivalent); use set(key, scale, 0) to zero the current window.
  • Requires hammer ~> 7.0. Works with Redis >= 2.6 (no EXPIREAT ... NX usage).

1.0.0 (2023-12-12)

Initial release.