Clojure Redis client & message queue.
Handles socket connection lifecycle. Pool is implemented with Apache Commons pool. Originally adapted from `redis-clojure`.
Alpha - subject to change. Distributed lock implementation for Carmine. Based on work by Ronen Narkis and Josiah Carlson. Redis keys: * carmine:lock:<lock-name> -> ttl str, lock owner's UUID. Ref. <http://goo.gl/5UalQ> for implementation details.
Carmine-backed Clojure message queue, v2. All heavy lifting by Redis. Uses an optimized message circle architecture that is simple, reliable, and has pretty good throughput and latency. See `mq-architecture.svg` in repo for diagram of architecture, Ref. <http://antirez.com/post/250> for initial inspiration. Message status e/o: nil - Not in queue or already GC'd :queued - Awaiting handler :queued-with-backoff - Awaiting handler, but skip until backoff expired :locked - Currently with handler :locked-with-requeue - Currently with handler, will requeue when done :done-awaiting-gc - Finished handling, awaiting GC :done-with-backoff - Finished handling, awaiting GC, but skip until dedupe backoff expired :done-with-requeue - Will requeue, but skip until dedupe backoff expired Redis keys (all prefixed with `carmine:mq:<qname>:`): * messages - hash: {mid mcontent} ; Message content * messages-rq - hash: {mid mcontent} ; '' for requeues * lock-times - hash: {mid lock-ms} ; Optional mid-specific lock duration * lock-times-rq - hash: {mid lock-ms} ; '' for requeues * udts - hash: {mid udt-first-enqueued} * locks - hash: {mid lock-expiry-time} ; Active locks * backoffs - hash: {mid backoff-expiry-time} ; Active backoffs * nattempts - hash: {mid attempt-count} * done - mid set: awaiting gc, etc. * requeue - mid set: awaiting requeue ; Deprecated * mids-ready - list: mids for immediate handling (push to left, pop from right) * mid-circle - list: mids for maintenance processing (push to left, pop from right) * ndry-runs - int: num times worker(s) have lapped queue w/o work to do * isleep-a - list: 0/1 sentinel element for `interruptible-sleep` * isleep-b - list: 0/1 sentinel element for `interruptible-sleep`
Semi-automatic archival datastore layer for Carmine. Use multiple Redis instances (recommended) or Redis databases for local key namespacing. Redis keys: * carmine:tundra:evictable - set, ks for which `ensure-ks` fail should throw
Secondary Redis server DataStore implementation for Tundra.
No vars found in this namespace.
Faraday (DynamoDB) DataStore implementation for Tundra. Use AWS Data Pipeline to setup scheduled backups of DynamoDB table(s) to S3 (there is a template pipeline for exactly this purpose).
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close