2011-10-15 85 views
4

我使用下面的代碼來設置redis的Clojure的Redis的設定是設置值,而不是價值

(defn save-to-redis[key value] 
    (let [str-value (json/generate-string value)] 
     (redis/with-server {:host "127.0.0.1" :port 6379 :db 0} 
     (redis/set key str-value)))) 

鍵,但是當我檢查值運行redis-設置有串的長度CLI我看到它返回STR-值不STR-值的長度

這我已經剝離下來到:

(defn save-to-redis[key value] 
    (redis/with-server {:host "127.0.0.1" :port 6379 :db 0} 
    (redis/set "foo" "bar"))) 

,當我用「的Redis-CLI>得到富」它響應「3」

我上http://devender.wordpress.com/2010/06/13/redis-and-clojure/看的例子,甚至複製和粘貼他的榜樣失敗。我嘗試:

(defn test-redis [] 
(println "testing redis") 
(redis/with-server {:host "127.0.0.1" :port 6379 :db 0} 
    (do 
    (redis/set "foo" "bar") 
    (println (redis/get "foo"))))) 

,我得到

testing redis 
Exception: java.lang.Exception: Server error: ERR unknown command 'bar' 
        internal.clj:123 redis.internal/eval1198[fn] 
        MultiFn.java:163 clojure.lang.MultiFn.invoke 
        internal.clj:114 redis.internal/read-reply 
        internal.clj:112 redis.internal/read-reply 
         redis.clj:75 redis/get 
         core.clj:65 spendy.core/test-redis[fn] 
        internal.clj:48 redis.internal/with-server* 
         core.clj:62 spendy.core/test-redis 
         core.clj:74 spendy.core/respond-to-ajax 
        routes.clj:16 spendy.routes/fn 
         core.clj:39 compojure.core/if-route[fn] 
         core.clj:24 compojure.core/if-method[fn] 
         core.clj:98 compojure.core/routing[fn] 
        core.clj:2053 clojure.core/some 
         core.clj:98 compojure.core/routing 
        RestFn.java:140 clojure.lang.RestFn.applyTo 
         core.clj:542 clojure.core/apply 
         core.clj:103 compojure.core/routes[fn] 
      keyword_params.clj:21 ring.middleware.keyword-params/wrap-keyword-params[fn] 
       nested_params.clj:64 ring.middleware.nested-params/wrap-nested-params[fn] 
        params.clj:76 ring.middleware.params/wrap-params[fn] 
      multipart_params.clj:80 ring.middleware.multipart-params/wrap-multipart-params[fn] 
        session.clj:40 ring.middleware.session/wrap-session[fn] 
        cookies.clj:132 ring.middleware.cookies/wrap-cookies[fn] 
       middleware.clj:12 hiccup.middleware/wrap-base-url[fn] 
         Var.java:365 clojure.lang.Var.invoke 
       stacktrace.clj:15 ring.middleware.stacktrace/wrap-stacktrace-log[fn] 
       stacktrace.clj:79 ring.middleware.stacktrace/wrap-stacktrace-web[fn] 
      reload_modified.clj:15 ring.middleware.reload-modified/wrap-reload-modified[fn] 
       stacktrace.clj:15 ring.middleware.stacktrace/wrap-stacktrace-log[fn] 
       stacktrace.clj:79 ring.middleware.stacktrace/wrap-stacktrace-web[fn] 
         jetty.clj:16 ring.adapter.jetty/proxy-handler[fn] 
        (Unknown Source) ring.adapter.jetty.proxy$org.mortbay.jetty.handler.AbstractHandler$0.handle 
      HandlerWrapper.java:152 org.mortbay.jetty.handler.HandlerWrapper.handle 
        Server.java:326 org.mortbay.jetty.Server.handle 
      HttpConnection.java:542 org.mortbay.jetty.HttpConnection.handleRequest 
      HttpConnection.java:945 org.mortbay.jetty.HttpConnection$RequestHandler.content 
       HttpParser.java:756 org.mortbay.jetty.HttpParser.parseNext 
       HttpParser.java:218 org.mortbay.jetty.HttpParser.parseAvailable 
      HttpConnection.java:404 org.mortbay.jetty.HttpConnection.handle 
      SocketConnector.java:228 org.mortbay.jetty.bio.SocketConnector$Connection.run 
     QueuedThreadPool.java:582 org.mortbay.thread.QueuedThreadPool$PoolThread.run 

我在我束手無策。如果它有幫助,這裏是我的ns形式:

(ns spendy.core 
    (:use [hiccup core page-helpers]) 
    (:require redis 
     [clj-json.core :as json])) 
+0

,我嘗試了其他幾個值放入數據庫,它總是把它們的長度:在Java Redis的客戶端 - 這只是包裝Jedis。即使沒有加引號也是如此(redis/set「foo」4459)會導致數據庫中的「foo」被設置爲「4」。 –

+1

我從來沒有得到這個工作,即使Clojure的,Redis的的自檢失敗(沒有使用我的代碼)切換到使用Jedis,這是直截了當本博文爲例:https://gist.github.com/997393/a31516b339f1f63cd532edd7f2e0851d1be28dd6 –

回答

1

試試這個(從mmcgrana和technomancy - 兩個Clojure的大師)。順便說

https://github.com/mmcgrana/clj-redis

+0

這是另一個http://ztellman.github.com/aleph/aleph.redis-api.html非阻塞式nio風格。 –

+0

和爲數不多的例子我能找到使用aleph.redis之一:https://bitbucket.org/sjl/newseasons/src/e3e497ef8f62/src/newseasons/models/users.clj –

相關問題