Provides an implementation of an in-memory ring SessionStore with TTL.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src/ring_ttl_session
test/ring_ttl_session
.gitignore
.travis.yml
LICENSE
README.md
project.clj

README.md

ring-ttl-session

travis-status

A session storage that stores session data in-memory with a time-to-live (TTL). It's very similar to ring.middleware.session.memory, but it may use expiring-map (default) or core.cache instead of a Clojure's native map.

Installation

Clojars Project

Usage

The difference from the Ring's native in-memory session store is minimal.

(require '[ring.middleware.session :refer [wrap-session]]
         '[ring-ttl-session.core :refer [ttl-memory-store]])

(def app
  ;; Using the default implementation, expiring-map.
  (wrap-session handler {:store (ttl-memory-store (* 60 30))}))

;; Using core.cache
;; (ttl-memory-store (* 60 30) :core-cache)

The argument of ttl-memory-store is the expiration time given in seconds (the example's session expires in 30 minutes). At least for now, it's recommended to use the default implementation (expiring-map) because of it's low performance overhead when compared with the bare in-memory session store (check the ring-ttl-session.performance namespace or this issue for details).

Listeners

Another interesting feature of expiring-map, the default implementation, is the support for listeners.

(ttl-memory-store (* 60 30) {:listeners [(fn [k v] (println k v))]})

Other supported features and options can be checked in the project's page.

License

Copyright © 2015 Andre Boechat

Distributed under the Eclipse Public License, the same as Clojure.