redis.clj:
(ns proj.redis
(:require
[celtuce.connector :as conn]
[taoensso.timbre :as log]
[mount.core :as mount]
[proj.global :as g]))
(mount/defstate redis-client
:start (let [port (get-in @g/config [:port :redis])
connector (conn/redis-server (str "redis://localhost:" port))]
(log/info (str "redis connection established on port: " port "."))
connector)
:stop (do
(conn/shutdown redis-client)
(log/info "redis connection closed.")))
(def cmds
(conn/commands-sync redis-client))
$ lein uberjar
java.lang.IllegalArgumentException: Нет реализации метода:: синхронизация команд протокола: # 'celtuce.Соединитель / RedisConnector найден для класса: mount.core.DerefableState, компиляция: (redis.clj: 24: 3) Исключение в потоке "main" java.lang.IllegalArgumentException: Нет реализации метода:: синхронизация команд протокола: # 'celtuce.connector / RedisConnector найден для класса: mount.core.DerefableState, компиляция: (redis.clj: 24: 3)
Кажется, проверка синтаксиса не прошла при компиляции.
Я также обнаружил, redis-client
- это celtuce.connector.RedisServer
, и (def cmds (conn/commands-sync redis-client))
можно запустить в repl, но не скомпилировать,Потому что