X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/5762b7f0f8d33eda021da908b6ddced684a2ba05..1259672feb4fcad189d413a341745990a844feda:/client-libraries/clojure/src/redis.clj diff --git a/client-libraries/clojure/src/redis.clj b/client-libraries/clojure/src/redis.clj deleted file mode 100644 index cb5a4fae..00000000 --- a/client-libraries/clojure/src/redis.clj +++ /dev/null @@ -1,129 +0,0 @@ -;(add-classpath "file:///Users/ragge/Projects/clojure/redis-clojure/src/") - -(ns redis - (:refer-clojure :exclude [get set type keys sort]) - (:use redis.internal)) - -;(set! *warn-on-reflection* true) - -(defmacro with-server - "Evaluates body in the context of a new connection to a Redis server - then closes the connection. - - server-spec is a map with any of the following keys: - :host hostname (default \"127.0.0.1\") - :port port (default 6379) - :db database to use (default 0)" - [server-spec & body] - `(with-server* ~server-spec (fn [] - (do - (redis/select (:db *server*)) - ~@body)))) - - -;; -;; Reply conversion functions -;; -(defn int-to-bool - "Convert integer reply to a boolean value" - [int] - (= 1 int)) - -(defn string-to-keyword - "Convert a string reply to a keyword" - [string] - (keyword string)) - -(defn string-to-seq - "Convert a space separated string to a sequence of words" - [#^String string] - (if (empty? string) - nil - (re-seq #"\S+" string))) - -(defn string-to-map - "Convert strings with format 'key:value\r\n'+ to a map with {key - value} pairs" - [#^String string] - (let [lines (.split string "(\\r\\n|:)")] - (apply hash-map lines))) - -(defn int-to-date - "Return a Date representation of a UNIX timestamp" - [int] - (new java.util.Date (long int))) - -(defn seq-to-set - [sequence] - (clojure.core/set sequence)) - -;; -;; Commands -;; -(defcommands - ;; Connection handling - (auth [] :inline) - (quit [password] :inline) - (ping [] :inline) - ;; String commands - (set [key value] :bulk) - (get [key] :inline) - (getset [key value] :bulk) - (setnx [key value] :bulk int-to-bool) - (incr [key] :inline) - (incrby [key integer] :inline) - (decr [key] :inline) - (decrby [key integer] :inline) - (exists [key] :inline int-to-bool) - (mget [key & keys] :inline) - (del [key] :inline int-to-bool) - ;; Key space commands - (type [key] :inline string-to-keyword) - (keys [pattern] :inline string-to-seq) - (randomkey [] :inline) - (rename [oldkey newkey] :inline) - (renamenx [oldkey newkey] :inline int-to-bool) - (dbsize [] :inline) - (expire [key seconds] :inline int-to-bool) - (ttl [key] :inline) - ;; List commands - (rpush [key value] :bulk) - (lpush [key value] :bulk) - (llen [key] :inline) - (lrange [key start end] :inline) - (ltrim [key start end] :inline) - (lindex [key index] :inline) - (lset [key index value] :bulk) - (lrem [key count value] :bulk) - (lpop [key] :inline) - (rpop [key] :inline) - ;; Set commands - (sadd [key member] :bulk int-to-bool) - (srem [key member] :bulk int-to-bool) - (spop [key] :inline) - (smove [srckey destkey member] :bulk int-to-bool) - (scard [key] :inline) - (sismember [key member] :bulk int-to-bool) - (sinter [key & keys] :inline seq-to-set) - (sinterstore [destkey key & keys] :inline) - (sunion [key & keys] :inline seq-to-set) - (sunionstore [destkey key & keys] :inline) - (sdiff [key & keys] :inline seq-to-set) - (sdiffstore [destkey key & keys] :inline) - (smembers [key] :inline seq-to-set) - ;; Multiple database handling commands - (select [index] :inline) - (move [key dbindex] :inline) - (flushdb [] :inline) - (flushall [] :inline) - ;; Sorting - (sort [key & options] :sort) - ;; Persistence - (save [] :inline) - (bgsave [] :inline) - (lastsave [] :inline int-to-date) - (shutdown [] :inline) - ;; Remote control - (info [] :inline string-to-map) - ;;(monitor [] :inline)) -)