diff --git a/deps.edn b/deps.edn new file mode 100644 index 0000000..197317d --- /dev/null +++ b/deps.edn @@ -0,0 +1,4 @@ + {:deps {org.clojure/clojure {:mvn/version "1.10.2"} + com.taoensso/carmine {:mvn/version "3.1.0"} + org.clojure/core.cache {:mvn/version "1.0.217"} + org.clojure/core.memoize {:mvn/version "1.0.236"}}} diff --git a/project.clj b/project.clj index 3a55929..13175ce 100644 --- a/project.clj +++ b/project.clj @@ -2,10 +2,9 @@ :description "Redis-backed caching and memoization, following core.cache and core.memoize" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} :url "http://github.com/strongh/crache" - :dependencies [[org.clojure/clojure "1.4.0"] - [com.taoensso/carmine "2.7.0"] - [org.clojure/core.cache "0.6.4"] - [org.clojure/core.memoize "0.5.6"]] + :plugins [[lein-tools-deps "0.4.5"]] + :middleware [lein-tools-deps.plugin/resolve-dependencies-with-deps-edn] + :lein-tools-deps/config {:config-files [:install :user :project]} :mirrors {"clojure" {:url "https://build.clojure.org/releases/"} "clojure-snapshots" {:url "https://build.clojure.org/snapshots/"} diff --git a/src/crache/cache.clj b/src/crache/cache.clj index c3e82e7..02e9d56 100644 --- a/src/crache/cache.clj +++ b/src/crache/cache.clj @@ -15,23 +15,23 @@ (lookup [_ item not-found] (delay (or (wcar* $ (car/get (key-for $ item))) not-found))) - + (has? [_ item] (= 1 (wcar* $ (car/exists (key-for $ item))))) - + (hit [_ item] (RedisCache. $)) - + (miss [_ item val] (let [args (when-let [t (:ttl $)] ["ex" t]) val (if (delay? val) @val val)] - (wcar* $ (apply car/set (key-for $ item) (car/serialize val) args))) + (wcar* $ (apply car/set (key-for $ item) (car/freeze @val) args))) (RedisCache. $)) - + (evict [_ item] (wcar* $ (car/del (key-for $ item))) (RedisCache. $)) - + (seed [_ base] (RedisCache. base)) diff --git a/src/crache/memo.clj b/src/crache/memo.clj index d8ff63e..1987c54 100644 --- a/src/crache/memo.clj +++ b/src/crache/memo.clj @@ -1,12 +1,9 @@ (ns crache.memo - (:import [clojure.core.memoize PluggableMemoization]) - (:use [crache.cache :only [redis-cache-factory]] - [clojure.core.memoize :only [build-memoizer]])) - + (:require [crache.cache :refer [redis-cache-factory]] + [clojure.core.memoize :refer [memoizer]])) (defn memo-redis [f conn key-prefix & [ttl]] - (build-memoizer - #(clojure.core.memoize.PluggableMemoization. - %1 (apply redis-cache-factory conn key-prefix (when ttl [ttl]))) - f)) + (memoizer + f + (apply redis-cache-factory conn key-prefix (when ttl [ttl]))))