Redis-backed caching and memoization for clojure, following core.cache and core.memoize
Clojure
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src/crache
.gitignore
README.md
project.clj

README.md

crache

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

Installing


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

Usage


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

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

1411692039.884231 [0 127.0.0.1:50423] "SET" "key-prefix-for-fn(nil {:foo \"\xe5\", :bar 3, :eggs true})"
1411692039.906472 [0 127.0.0.1:50424] "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)))

or

; 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

License


Copyright (C) 2014 Homer Strong

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