Find file
Fetching contributors…
Cannot retrieve contributors at this time
60 lines (45 sloc) 1.38 KB


Redis backed Caching and Memoization, following core.cache and core.memoize.


Add the following to the :dependencies vector of your project.clj file: clojars version


Start your redis-server and connect a crache client to it.

Then run redis-cli monitor | grep -E ' "(G|S)ET" ':

1411692039.884231 [0] "SET" "key-prefix-for-fn(nil {:foo \"\xe5\", :bar 3, :eggs true})"
1411692039.906472 [0] "GET" "key-prefix-for-fn(nil {:foo \"\xe5\", :bar 3, :eggs true})"

Awesome! :)

Memoization client

=> (require '[crache.memo :refer [memo-redis]])

Redis client connection specification:

(def conn {:pool {} :spec {:host "localhost" :port 6379}})
; redis memoizes 'f', using a key-prefix
=> (def memo-f (memo-redis f conn (str ::f)))


; redis memoizes 'f', using a key-prefix and an expire time (60 seconds)
=> (def memo-f (memo-redis f conn (str ::f) 60))

then use memo-f like you would use your usual memoized fn:

=> (memo-f some-input) ;=> some-output


Copyright (C) 2014 Homer Strong

Distributed under the Eclipse Public License, the same as Clojure.