This project uses Break Versioning as of Aug 16, 2014.
[com.taoensso/carmine "3.1.0"]
This is a minor feature release. It should be non-breaking.
v3.0.0initial-backoff-ms option to enqueue (@st3fan)[com.taoensso/carmine "3.0.0"]
This is a major feature + security release. It may be BREAKING.
See here for recommended steps when updating any Clojure/Script dependencies.
v2.20.0v1.5 to v1.7.v2.20.0conn-alive? check for listener connectionsparse-listener-msg util for more easily writing handler fnswith-new-pubsub-listener to take a single direct handler-fn[com.taoensso/carmine "2.21.0-RC1"]
This is a maintenance + security release. It may be BREAKING.
See here for recommended steps when updating any Clojure/Script dependencies.
v2.20.0v1.5 to v1.7.v3, see Nippy CVE-2020-24164 issue #130 for details, incl. upgrade instructions. This will affect you iff you use Carmine's automatic de/serialization feature.v2.20.0[com.taoensso/carmine "2.20.0"]
Same as v2.20.0-RC1.
See here for recommended steps when updating any Clojure/Script dependencies.
[com.taoensso/carmine "2.20.0-RC1"]
As v2.20.0-beta2, with:
[com.taoensso/carmine "2.20.0-beta2"]
This is a significant maintenance + feature release. Should be non-breaking, but please test.
New: update to latest Redis commands spec
New: reduce-scan: support reduced
[#230] Fix: Mod default pool opts: avoid premature closing of connections (@pete-woods)
[#221] Fix: [Message queue] Block to wait for futures on worker stop (@isaacseymour)
[#227] Fix: Move commands.edn, lua/ into namespaced dir to avoid possible namespace clashes (@SevereOverfl0w)
Impl: Protocol: Add minimal (2-byte) nil placeholder bytestring (micro-optimisation)
Impl: Avoid apply on lua calls (micro-optimisation)
[#231] New: Experimental: Add conns instrumentation fn callbacks (@pete-woods)
New: Experimental: Add reduce-hscan util
New: Experimental: Add :swap/delete support to swap utils
New: Experimental: Add :swap/abort support to swap utils
New: Experimental: Add new hmsetnx lua command
New: Experimental: Make issue-81-workround optional
[com.taoensso/carmine "2.19.1"]
This is a hotfix release
[com.taoensso/carmine "2.19.0"]
This is a non-breaking maintenance release
commons.pool[com.taoensso/carmine "2.18.1"]
This is a non-breaking hotfix release
[com.taoensso/carmine "2.18.0"]
This is a non-breaking maintenance release
MEMORY commands)EVAL, EVALSHA to take 0 keys[com.taoensso/carmine "2.17.0"]
This is a non-breaking maintenance + minor feature release
[com.taoensso/carmine "2.16.0"]
This is a maintenance release that should generally be non-breaking, but please note a potential serialization-compatibility issue if you upgrade in a mixed-version environment.
protocol/get-parsed-reply fn (@firesofmay)[com.taoensso/carmine "2.15.1"]
This is a non-breaking hotfix release
redis-call[com.taoensso/carmine "2.15.0"]
This is a non-breaking maintenance release
[com.taoensso/carmine "2.14.0"]
This is a non-breaking release that upgrades Carmine's Nippy dependency
qname to arg map passed to queue handler (@dparis)[com.taoensso/carmine "2.13.1"]
This is a hotfix release and recommended upgrade for all users of
v2.13.0
[com.taoensso/carmine "2.13.0"]
This is a non-breaking performance and housekeeping release
commands.json (bitops, etc.)reduce-scan util for use with scan, zscan, etc.atomic* was broken for non-const max-cas-attempts [#165 @MysteryMachine]dequeue errors [#87 @gsnewmark]This is a minor, non-breaking release
[com.taoensso/carmine "2.12.2"]
[com.taoensso/carmine "2.12.1"]
This is a significant feature release focused on new CAS utils
with-replies now supports nestingswap, hswapwcar docstring now has a warning re: laziness [#138][com.taoensso/carmine "2.12.0"]
This is a non-breaking hotfix release
[com.taoensso/carmine "2.11.1"]
This is a non-breaking maintenance release
[com.taoensso/carmine "2.11.0"]
This is a non-breaking performance release
doseq -> (faster) run! calls[com.taoensso/carmine "2.10.0"]
This is a non-breaking hotfix release
make-new-connection destructuring [@chairmanwow @mavbozo #130]return can now take multiple args[com.taoensso/carmine "2.9.2"]
This is a non-breaking hotfix release
atomic no longer masks pre-discard exceptions[com.taoensso/carmine "2.9.1"]
This release adds more control over connection timeouts and introduces a default (4 second) timeout for acquiring a connection.
:read-timeout-ms and :conn-timeout-ms (the latter defaults to 4 seconds).This is a major but backwards-compatible update focused on performance tuning + general housekeeping.
compare-and-set optimization: now uses hashing for all arg types.:conn-setup-fn option (useful for pre-loading Lua scripts, etc.).parse-suppress (useful with atomic, etc.).compare-and-set fn.This is a significant release that may be breaking for those using custom connection pool options.
Exceptions are now ExceptionInfos.wcar, atomic*, atomic now catch Throwables rather than Exceptions (assertions in particular).atomic* (alpha) low-level transactions util (#93).This is a hotfix release.
This is an important fix release, please update from
v2.6.0ASAP.
Adds support for new HyperLogLog commands (currently requires a Redis >=2.8.9 client).
Encore dependency.Major, backwards-compatible release that refactors a lot of internal code for performance, reliability, and as groundwork for an upcoming v3 with Redis Cluster support.
encore dependency.as-long, as-double, parse-long, parse-double -> as-int, as-float, parse-int, parse-float.atomic exception handling (wasn't throwing swap exceptions as it should).atomic arg order (neilmock).This is a backwards compatible bug fix release. Recommended upgrade.
commands.json to bring in Redis 2.8 SCAN commands.as-map (and by extension parse-map) post condition bug: should allow nils.lua-local vector-args bug.lua + parse-raw support (chenfisher).IMPORTANT Message queues: pre-2.4.0-beta1 queues should be compatible with 2.4.0-beta1+, but I would recommend draining your old queues before upgrading to 2.4.0-beta1+ to be on the safe side. That is: if you have any queued work outstanding - finish processing the work before upgrading Carmine.
BREAKING Tundra: the datastore protocol has changed (been simplified). put-keys, fetch-keys -> put-key, fetch-keys.
POTENTIALLY BREAKING Parsers: with-replies now passes enclosing parser state to its body. This only affects you if you have used with-replies to write custom Redis commands that operate within an implicit context and you interpret the with-replies result internally. The new docstring contains details.
DEPRECATED: hmget* and hmgetall*. In future use the parse-map macro which is: faster, more flexible, pipeline-capable.
Parsers: completely refactored design for robustness+flexibility.
Parsers: new unit-test suite.
Parsers: fixed a number of subtle bugs, mostly internal.
Parsers: added parser-comp fn for composing parsers (see docstring for details).
Parsers: added parse-nippy macro for convenient per-cmd control of thaw opts.
Parsers: added parse-map for parsing multi-bulk replies as Clojure hashmaps.
Message queues: completely refactored design for robustness+efficiency.
Message queues: new unit-test suite.
Message queues: fixed a number of bugs, mostly garbage-collection issues.
Message queues: enqueue now accepts an optional, custom unique message id (e.g. message hash).
Message queues: handlers may now return {:status :success :backoff-ms <msecs>} for de-duplicate backoff. enqueue will return an error in these cases (see docstring for details).
Message queues: message-status can now be called within pipelines.
Message queues: message-status now has more detailed return types (see docstring for details).
Message queues: multi-worker end-of-queue backoffs are now synchronized more efficiently.
Message queues: workers now accept an optional monitor fn for queue-status logging, etc. (see docstring for details). A default monitor is provided that will warn when queue size > 1000 items.
Message queues: workers now accept an optional nthreads arg for spinning up synchronized multi-threaded workers.
Message queues: handlers now receive message id along with other args.
Message queues: enqueue now takes an optional flag to specify dedupe behaviour when message is locked.
Message queues: queue-status now shows next & last mid.
Message queues: add support for delayed start (use :auto-start <ms> option).
Message queues: log notice on worker start/stop.
Tundra: completely refactored design for robustness+simplicity - now use standard message queue for replication worker.
Tundra: replication workers have inherited message queue features like retries, backoffs, etc.
Tundra: added S3 DataStore and skeleton secondary Carmine DataStore implementations.
Tundra: new unit test suite.
Tundra: eviction TTL is now set only after first successful replication, providing an extra level of safety.
Tundra: ensure-ks now no longer throws when attempting to ensure non-evictable keys.
Tundra: added simple disk-based DataStore implementation.
Scripts: added experimental lua-local for higher script performance in single-server environments.
atomically, ensure-atomically -> atomic. The new macro is faster, more robust, more flexible. See docstring for details.:redis-api metadata key that describes the first version of Redis to support the command.hmset*, hmget* helpers.:clojurize? option to info* helper.hmget*, hgetall*, zinterstore* to work with custom parsers.lua clashing var name regex bug (thanks to Alex Kehayias for report).with-replies, wcar macro can now take a first :as-pipeline arg:(wcar {} (car/ping)) => "PONG"
(wcar {} :as-pipeline (car/ping)) => ["PONG"]
kname -> key. The new fn does NOT automatically filter input parts for nil. This plays better with Redis' key pattern matching style, but may require manual filtering in some cases.Refactored a bunch of code for simplicity+performance (~20% improved roundtrip times).
Upgraded to Nippy v2 for pluggable compression+crypto. See the Nippy CHANGELOG for details.
Added early (alpha) Tundra API for semi-automatic cold data archiving. See the README for details.
DEPRECATED: with-conn, make-conn-pool, make-conn-spec -> wcar:
;;; Old usage
(def conn-pool (car/make-conn-pool <opts>))
(def conn-spec (car/make-conn-spec <opts>))
(defmacro wcar* [& body] `(car/with-conn conn-pool conn-spec ~@body))
;;; New idiomatic usage
(ns my-app (:require [taoensso.carmine :as car :refer (wcar)]))
(def server1-conn {:pool {<opts>} :spec {<opts>}})
(wcar server1-conn (car/ping)) => "PONG"
;; or
(defmacro wcar* [& body] `(car/wcar server1-conn ~@body))
BREAKING: Keyword args now get stringified instead of serialized:
(wcar* (car/set "foo" :bar) (car/get "foo")) => :bar ; Old behaviour
(wcar* (car/set "foo" :bar) (car/get "foo")) => "bar" ; New
;; Idiomatic usage is now:
(wcar* (car/set "foo" :bar) (car/parse-keyword (car/get "foo"))) => :bar
;; Or use `freeze` if you want to serialize the input arg like before:
(wcar* (car/set "foo" (car/freeze :bar)) (car/get "foo")) => :bar
BREAKING: Raw binary data return type is now unwrapped:
(wcar* (car/get "raw-bytes")) => [<length> [B@4d66ea88>]] ; Old behaviour
(wcar* (car/get "raw-bytes")) => [B@4d66ea88> ; New
BREAKING: Distributed locks API has changed:
The old API used an atom for connection config. The new API takes an explicit conn arg for every fn/macro.
Added message queue per-message backoffs:
;; Handler fns can now return a response of form:
{:status <#{:success :error :retry}>
:throwable <Throwable>
:backoff-ms <retry-backoff-ms>}
Added redis-call command for executing arbitrary Redis commands: (redis-call [:set "foo" "bar"] [:get "foo"]). See docstring for details.
Improved a number of error messages.
Fixed a number of subtle reply-parsing bugs.
Remove alpha status: parse, return, message queue ns.
DEPRECATED: with-parser -> parse.
DEPRECATED: make-dequeue-worker -> worker. See docstring for details.
Added support for unnamed vector (non-map) keys/args to lua-script.
DEPRECATED: lua-script -> lua.
DEPRECATED: ring/make-carmine-store -> ring/carmine-store.
Add ensure-atomically. See docstring for details.
with-replies and eval* bugs.with-mparser (vestigial).raw and parse-raw fns for completely unprocessed Redis comms.make-conn-spec :timeout opt -> :timeout-ms.make-keyfn -> kname.as-bool now throws on incoercible arg.interpolate-script memoization bug (big perf. boost).skip-replies.with-parser to clear current parsers with nil fn arg.make-conn-spec.Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |