redistore

A session store backend for gorilla/sessions - src.
Requirements
Depends on the Redigo Redis library.
Installation
go get github.com/boj/redistore
Documentation
Available on godoc.org.
See the repository for full documentation on underlying interface.
Example
package main
import (
"log"
"net/http"
"github.com/boj/redistore"
"github.com/gorilla/sessions"
)
func main() {
store, err := redistore.NewRediStore(10, "tcp", ":6379", "", "", []byte("secret-key"))
if err != nil {
panic(err)
}
defer store.Close()
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
session, err := store.Get(r, "session-key")
if err != nil {
log.Println(err.Error())
return
}
session.Values["foo"] = "bar"
if err = sessions.Save(r, w); err != nil {
log.Fatalf("Error saving session: %v", err)
}
session.Options.MaxAge = -1
if err = sessions.Save(r, w); err != nil {
log.Fatalf("Error saving session: %v", err)
}
})
log.Fatal(http.ListenAndServe(":8080", nil))
}
Configuration
SetMaxLength
Sets the maximum length of new sessions. If the length is 0, there is no limit to the size of a session.
store.SetMaxLength(4096)
SetKeyPrefix
Sets the prefix for session keys in Redis.
store.SetKeyPrefix("myprefix_")
SetSerializer
Sets the serializer for session data. The default is GobSerializer.
store.SetSerializer(redistore.JSONSerializer{})
SetMaxAge
Sets the maximum age, in seconds, of the session record both in the database and in the browser.
store.SetMaxAge(86400 * 7)
Custom Serializers
JSONSerializer
Serializes session data to JSON.
type JSONSerializer struct{}
func (s JSONSerializer) Serialize(ss *sessions.Session) ([]byte, error) {
}
func (s JSONSerializer) Deserialize(d []byte, ss *sessions.Session) error {
}
GobSerializer
Serializes session data using the gob package.
type GobSerializer struct{}
func (s GobSerializer) Serialize(ss *sessions.Session) ([]byte, error) {
}
func (s GobSerializer) Deserialize(d []byte, ss *sessions.Session) error {
}
License
This project is licensed under the MIT License - see the LICENSE file for details.