Changelog
0.1.1 (2026-06-20)
Features
- make read coercion configurable globally and per call (73d9014)
Bug Fixes
- add hex.pm link to readme (2d6791f)
- add hex.pm link to readme (0a3a324)
- preserve integers in iodata keys and dedup set_many writes (a86c3a4)
- preserve integers in iodata keys and dedup set_many writes (f591b2e)
[Unreleased] (2026-06-20)
Fixed
validate_key/1 no longer drops non-binary elements of an iodata key.
Elements are now stringified (not filtered), so ["prefix:", 42] produces
"prefix:42" and distinct ids no longer collide on the same key.set_many/2 dedups repeated keys with last-write-wins before building the
MSET, fixing a malformed command (duplicate fields, reversed order) when a
key appeared more than once.set_many/2 now surfaces TTL pipeline failures as {:error, reason} instead
of unconditionally returning :ok; the spec widens to :ok | {:error, term()}.
Added
get/2 accepts a coerce: false option to return the raw stored string
without boolean/integer coercion (e.g. "01001" stays "01001"). Default
behavior is unchanged.set/3 now guards :ttl with is_integer(ttl) and ttl > 0, raising
ArgumentError on an invalid TTL instead of emitting a raw Redis error.config :cistern, :debug_commands, false flag to gate the per-command debug
log in Cistern.Redis.Client (off by default).
0.1.0 (2024-01-01)
Initial release
Cistern public API: get/2, set/3, multiple/1, set_many/2, delete/1, delete_many/1, increment/1- Low-level escape hatches:
command/2, pipeline/2, noreply_pipeline/2 - Poolboy-backed connection pool with configurable size, overflow, and timeout
- Automatic type coercion on reads:
"true"/"false" → boolean, numeric strings → integer - Iodata key support: pass
["prefix:", id] anywhere a key is accepted RedixMock test double for unit testing without a live Redis instance