Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
clojure redis set正在设置值的字符串长度,而不是值_Clojure_Redis_Ring - Fatal编程技术网

clojure redis set正在设置值的字符串长度,而不是值

clojure redis set正在设置值的字符串长度,而不是值,clojure,redis,ring,Clojure,Redis,Ring,我使用以下代码在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 value的长度,而

我使用以下代码在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 value的长度,而不是str value

我将其简化为:

(defn save-to-redis[key value]
     (redis/with-server {:host "127.0.0.1" :port 6379 :db 0}
    (redis/set "foo" "bar")))
当我使用“redis cli>get foo”时,它会响应“3”

我正在看上面的示例,甚至复制和粘贴他的示例都失败了。我尝试:

(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]))

您使用的是哪个版本的redis clojure?它可以很好地工作:

试试这个(来自mmcgrana和technomancy——两位Clojure大师)。它只是包装了Jedis——java redis客户端:


顺便说一句,我尝试将其他几个值输入到数据库中,它总是输入它们的长度。即使是不带引号的数字(redis/set“foo”4459)也会导致数据库中的“foo”被设置为“4”。我从来没有这样做过,即使clojure redis的自检失败(没有使用我的代码)也改用了绝地,以这篇博客文章为例,这是一个直截了当的例子:这里是另一个非阻塞nio风格。我可以找到的aleph.redis使用中的几个例子之一: