Integrant methods for connecting to a Redis database via Carmine.
To install, add the following to your project :dependencies
:
[duct/database.redis.carmine "0.1.1"]
This library provides two things: a Boundary
record that holds
connection options for Carmine, and a multimethod for
:duct.database.redis/carmine
that initiates a those options into the
Boundary
.
{:duct.database.redis/carmine {:spec {:host "127.0.0.1", :port 6379}}}
When you write functions against the Redis database, consider using a
protocol and extending the Boundary
record. This will allow you to
easily mock or stub out the database using a tool like Shrubbery.
Consider a redis database where users are stored as hashmap with keys
like user:{username}
.
The connection spec needed by Carmine can be extracted from this module
Boundary
by using the :conn-opts
key.
(ns my-project.boundary.user-db
(:require [duct.database.redis.carmine]
[taoensso.carmine :as car :refer (wcar)]))
(defprotocol UserDatabase
(get-user [db username]))
(extend-protocol UserDatabase
duct.database.redis.carmine.Boundary
(get-user [db username]
(car/wcar (:conn-opts db)
(car/hgetall (str "user:" username)))))
Copyright © 2018 James Reeves
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.