Liking cljdoc? Tell your friends :D

molecula

Clojure refs on redis with one line of code (experimental).

Clojars Project cljdoc badge Clojure CI

require

(require '[molecula.core :as mol :refer [redis-ref]])

redis connection

(def conn {:pool {} :spec {:uri "redis://localhost:6379"}})

def ref

;; was: (def rr (ref {:so {:much "data"}})), and now:
(def rr (redis-ref conn :ref-key {:so {:much "data"}}))

dosync

;; was (dosync ..., and now:
(mol/dosync conn
  (alter this inc)
  (println "hello")
  (alter that dec)
  (println "all-done"))

Everything else is (or should be) the same as refs except redis-ref uses optimistic locking instead of implementing STM on Redis.

Some stuff is still on TODO list:

  • transaction timeout
  • dispatch agents
  • some exceptions are not exactly the same
  • tests, tests and more tests

Testing

Running the test suite requires redis backend service which can be easily created with docker-compose. To start a local backend:

$ cd redis
$ docker-compose up -d

This will start a redis server on 6379 and a redis-commander on 8081. If you are a fan of redis-cli, run redis-cli.sh script in the same dir for the console.

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close