src/newseasons/middleware/session/redis.clj @ 991807da55ff
Moar.
author |
Steve Losh <steve@stevelosh.com> |
date |
Mon, 03 Oct 2011 19:52:37 -0400 |
parents |
(none) |
children |
(none) |
(ns newseasons.middleware.session.redis
"Redis session storage."
(:use ring.middleware.session.store)
(:use [cheshire.core :only (generate-string parse-string)])
(:use [aleph.redis :only (redis-client)])
(:import java.util.UUID))
(deftype RedisStore [r]
SessionStore
(read-session [_ key]
(parse-string (or @(r [:get key]) "{}")))
(write-session [_ key data]
(let [key (or key (str (UUID/randomUUID)))]
@(r [:set key (generate-string data)])
(r [:expire key (* 60 60 24 30)])
key))
(delete-session [_ key]
@(r [:del key])
nil))
(defn redis-store
"Creates a Redis-backed storage engine."
[host password] (RedisStore. (redis-client {:host host :password password})))