# README
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() {
// Fetch new store.
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) {
// Get a session.
session, err := store.Get(r, "session-key")
if err != nil {
log.Println(err.Error())
return
}
// Add a value.
session.Values["foo"] = "bar"
// Save.
if err = sessions.Save(r, w); err != nil {
log.Fatalf("Error saving session: %v", err)
}
// Delete session.
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) // 7 days
Custom Serializers
JSONSerializer
Serializes session data to JSON.
type JSONSerializer struct{}
func (s JSONSerializer) Serialize(ss *sessions.Session) ([]byte, error) {
// Implementation
}
func (s JSONSerializer) Deserialize(d []byte, ss *sessions.Session) error {
// Implementation
}
GobSerializer
Serializes session data using the gob package.
type GobSerializer struct{}
func (s GobSerializer) Serialize(ss *sessions.Session) ([]byte, error) {
// Implementation
}
func (s GobSerializer) Deserialize(d []byte, ss *sessions.Session) error {
// Implementation
}
License
This project is licensed under the MIT License - see the LICENSE file for details.
# Functions
NewRediStore creates a new RediStore with a connection pool to a Redis server.
NewRediStoreWithDB creates a new RediStore with a Redis connection pool.
NewRediStoreWithPool creates a new RediStore instance using the provided Redis connection pool and key pairs for secure cookie encoding.
NewRediStoreWithURL creates a new RediStore with a Redis connection pool configured using the provided URL.
# Structs
GobSerializer is a struct that provides methods for serializing and deserializing data using the Gob encoding format.
JSONSerializer is a struct that provides methods for serializing and deserializing data to and from JSON format.
RediStore represents a session store backed by a Redis database.
# Interfaces
SessionSerializer is an interface that defines methods for serializing and deserializing session data.