This project uses Break Versioning as of Aug 16, 2014.
[com.taoensso/carmine "3.2.0"]
This is a major feature + maintenance release. It should be non-breaking.
See here for recommended steps when updating any Clojure/Script dependencies.
v3.1.0
parse-long
, parse-double
)v3.1.0
wcar
documentation, alias pool constructor in main ns:extend-on-read?
option (@svdo)v3.1.0
[com.taoensso/carmine "3.1.0"]
This is a minor feature release. It should be non-breaking.
v3.0.0
initial-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.0
v1.5
to v1.7
.v2.20.0
conn-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.0
v1.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
, hswap
wcar
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.
Exception
s are now ExceptionInfo
s.wcar
, atomic*
, atomic
now catch Throwable
s rather than Exception
s (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.0
ASAP.
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 is a website building & hosting documentation for Clojure/Script libraries
× close