Documentation ¶
Index ¶
- Constants
- Variables
- type Config
- type Database
- func (db *Database) Acquire(sid string, expires time.Duration) sessions.LifeTime
- func (db *Database) Clear(sid string)
- func (db *Database) Close() error
- func (db *Database) Config() *Config
- func (db *Database) Delete(sid string, key string) (deleted bool)
- func (db *Database) Get(sid string, key string) (value interface{})
- func (db *Database) Len(sid string) (n int)
- func (db *Database) OnUpdateExpiration(sid string, newExpires time.Duration) error
- func (db *Database) Release(sid string)
- func (db *Database) Set(sid string, lifetime sessions.LifeTime, key string, value interface{}, ...)
- func (db *Database) Visit(sid string, cb func(key string, value interface{}))
- type Driver
- type RadixDriver
- func (r *RadixDriver) CloseConnection() error
- func (r *RadixDriver) Connect(c Config) error
- func (r *RadixDriver) Delete(key string) error
- func (r *RadixDriver) Get(key string) (interface{}, error)
- func (r *RadixDriver) GetAll() (interface{}, error)
- func (r *RadixDriver) GetKeys(prefix string) ([]string, error)
- func (r *RadixDriver) PingPong() (bool, error)
- func (r *RadixDriver) Set(key string, value interface{}, secondsLifetime int64) error
- func (r *RadixDriver) TTL(key string) (seconds int64, hasExpiration bool, found bool)
- func (r *RadixDriver) UpdateTTL(key string, newSecondsLifeTime int64) error
- func (r *RadixDriver) UpdateTTLMany(prefix string, newSecondsLifeTime int64) error
- type RedigoDriver
- func (r *RedigoDriver) CloseConnection() error
- func (r *RedigoDriver) Connect(c Config) error
- func (r *RedigoDriver) Delete(key string) error
- func (r *RedigoDriver) Get(key string) (interface{}, error)
- func (r *RedigoDriver) GetAll() (interface{}, error)
- func (r *RedigoDriver) GetBytes(key string) ([]byte, error)
- func (r *RedigoDriver) GetKeys(prefix string) ([]string, error)
- func (r *RedigoDriver) PingPong() (bool, error)
- func (r *RedigoDriver) Set(key string, value interface{}, secondsLifetime int64) (err error)
- func (r *RedigoDriver) TTL(key string) (seconds int64, hasExpiration bool, found bool)
- func (r *RedigoDriver) UpdateTTL(key string, newSecondsLifeTime int64) error
- func (r *RedigoDriver) UpdateTTLMany(prefix string, newSecondsLifeTime int64) error
Constants ¶
const ( // DefaultRedisNetwork the redis network option, "tcp". DefaultRedisNetwork = "tcp" // DefaultRedisAddr the redis address option, "127.0.0.1:6379". DefaultRedisAddr = "127.0.0.1:6379" // DefaultRedisTimeout the redis idle timeout option, time.Duration(30) * time.Second DefaultRedisTimeout = time.Duration(30) * time.Second // DefaultDelim ths redis delim option, "-". DefaultDelim = "-" )
Variables ¶
var ( // ErrRedisClosed an error with message 'redis: already closed' ErrRedisClosed = errors.New("redis: already closed") // ErrKeyNotFound a type of error of non-existing redis keys. // The producers(the library) of this error will dynamically wrap this error(fmt.Errorf) with the key name. // Usage: // if err != nil && errors.Is(err, ErrKeyNotFound) { // [...] // } ErrKeyNotFound = errors.New("key not found") )
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { // Network protocol. Defaults to "tcp". Network string // Addr of a single redis server instance. // See "Clusters" field for clusters support. // Defaults to "127.0.0.1:6379". Addr string // Clusters a list of network addresses for clusters. // If not empty "Addr" is ignored. // Currently only Radix() Driver supports it. Clusters []string // Password string .If no password then no 'AUTH'. Defaults to "". Password string // If Database is empty "" then no 'SELECT'. Defaults to "". Database string // MaxActive. Defaults to 10. MaxActive int // Timeout for connect, write and read, defaults to 30 seconds, 0 means no timeout. Timeout time.Duration // Prefix "myprefix-for-this-website". Defaults to "". Prefix string // Delim the delimeter for the keys on the sessiondb. Defaults to "-". Delim string // TLSConfig will cause Dial to perform a TLS handshake using the provided // config. If is nil then no TLS is used. // See https://golang.org/pkg/crypto/tls/#Config TLSConfig *tls.Config // Driver supports `Redigo()` or `Radix()` go clients for redis. // Configure each driver by the return value of their constructors. // // Defaults to `Redigo()`. Driver Driver }
Config the redis configuration used inside sessions
func DefaultConfig ¶
func DefaultConfig() Config
DefaultConfig returns the default configuration for Redis service.
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
Database the redis back-end session database for the sessions.
func (*Database) Acquire ¶
Acquire receives a session's lifetime from the database, if the return value is LifeTime{} then the session manager sets the life time based on the expiration duration lives in configuration.
func (*Database) Config ¶
Config returns the configuration for the redis server bridge, you can change them.
func (*Database) OnUpdateExpiration ¶
OnUpdateExpiration will re-set the database's session's entry ttl. https://redis.io/commands/expire#refreshing-expires
func (*Database) Release ¶
Release destroys the session, it clears and removes the session entry, session manager will create a new session ID on the next request after this call.
type Driver ¶
type Driver interface { Connect(c Config) error PingPong() (bool, error) CloseConnection() error Set(key string, value interface{}, secondsLifetime int64) error Get(key string) (interface{}, error) TTL(key string) (seconds int64, hasExpiration bool, found bool) UpdateTTL(key string, newSecondsLifeTime int64) error UpdateTTLMany(prefix string, newSecondsLifeTime int64) error GetAll() (interface{}, error) GetKeys(prefix string) ([]string, error) Delete(key string) error }
Driver is the interface which each supported redis client should support in order to be used in the redis session database.
type RadixDriver ¶
type RadixDriver struct { // Connected is true when the Service has already connected Connected bool // Config the read-only redis database config. Config Config // contains filtered or unexported fields }
RadixDriver the Redis service based on the radix go client, contains the config and the redis pool.
func (*RadixDriver) CloseConnection ¶
func (r *RadixDriver) CloseConnection() error
CloseConnection closes the redis connection.
func (*RadixDriver) Connect ¶
func (r *RadixDriver) Connect(c Config) error
Connect connects to the redis, called only once
func (*RadixDriver) Delete ¶
func (r *RadixDriver) Delete(key string) error
Delete removes redis entry by specific key
func (*RadixDriver) Get ¶
func (r *RadixDriver) Get(key string) (interface{}, error)
Get returns value, err by its key returns nil and a filled error if something bad happened.
func (*RadixDriver) GetAll ¶
func (r *RadixDriver) GetAll() (interface{}, error)
GetAll returns all redis entries using the "SCAN" command (2.8+).
func (*RadixDriver) GetKeys ¶
func (r *RadixDriver) GetKeys(prefix string) ([]string, error)
GetKeys returns all redis keys using the "SCAN" with MATCH command. Read more at: https://redis.io/commands/scan#the-match-option.
func (*RadixDriver) PingPong ¶
func (r *RadixDriver) PingPong() (bool, error)
PingPong sends a ping and receives a pong, if no pong received then returns false and filled error
func (*RadixDriver) Set ¶
func (r *RadixDriver) Set(key string, value interface{}, secondsLifetime int64) error
Set sets a key-value to the redis store. The expiration is setted by the secondsLifetime.
func (*RadixDriver) TTL ¶
func (r *RadixDriver) TTL(key string) (seconds int64, hasExpiration bool, found bool)
TTL returns the seconds to expire, if the key has expiration and error if action failed. Read more at: https://redis.io/commands/ttl
func (*RadixDriver) UpdateTTL ¶
func (r *RadixDriver) UpdateTTL(key string, newSecondsLifeTime int64) error
UpdateTTL will update the ttl of a key. Using the "EXPIRE" command. Read more at: https://redis.io/commands/expire#refreshing-expires
func (*RadixDriver) UpdateTTLMany ¶
func (r *RadixDriver) UpdateTTLMany(prefix string, newSecondsLifeTime int64) error
UpdateTTLMany like `UpdateTTL` but for all keys starting with that "prefix", it is a bit faster operation if you need to update all sessions keys (although it can be even faster if we used hash but this will limit other features), look the `sessions/Database#OnUpdateExpiration` for example.
type RedigoDriver ¶
type RedigoDriver struct { // Config the read-only redis database config. Config Config // Maximum number of idle connections in the pool. MaxIdle int // Close connections after remaining idle for this duration. If the value // is zero, then idle connections are not closed. Applications should set // the timeout to a value less than the server's timeout. IdleTimeout time.Duration // If Wait is true and the pool is at the MaxActive limit, then Get() waits // for a connection to be returned to the pool before returning. Wait bool // Connected is true when the Service has already connected Connected bool // contains filtered or unexported fields }
RedigoDriver is the redigo Redis go client, contains the config and the redis pool
func Redigo ¶
func Redigo() *RedigoDriver
Redigo returns the driver for the redigo go redis client. Which is the default one. You can customize further any specific driver's properties.
func (*RedigoDriver) CloseConnection ¶
func (r *RedigoDriver) CloseConnection() error
CloseConnection closes the redis connection.
func (*RedigoDriver) Connect ¶
func (r *RedigoDriver) Connect(c Config) error
Connect connects to the redis, called only once.
func (*RedigoDriver) Delete ¶
func (r *RedigoDriver) Delete(key string) error
Delete removes redis entry by specific key
func (*RedigoDriver) Get ¶
func (r *RedigoDriver) Get(key string) (interface{}, error)
Get returns value, err by its key returns nil and a filled error if something bad happened.
func (*RedigoDriver) GetAll ¶
func (r *RedigoDriver) GetAll() (interface{}, error)
GetAll returns all redis entries using the "SCAN" command (2.8+).
func (*RedigoDriver) GetBytes ¶
func (r *RedigoDriver) GetBytes(key string) ([]byte, error)
GetBytes returns value, err by its key you can use utils.Deserialize((.GetBytes("yourkey"),&theobject{}) returns nil and a filled error if something wrong happens
func (*RedigoDriver) GetKeys ¶
func (r *RedigoDriver) GetKeys(prefix string) ([]string, error)
GetKeys returns all redis keys using the "SCAN" with MATCH command. Read more at: https://redis.io/commands/scan#the-match-option.
func (*RedigoDriver) PingPong ¶
func (r *RedigoDriver) PingPong() (bool, error)
PingPong sends a ping and receives a pong, if no pong received then returns false and filled error
func (*RedigoDriver) Set ¶
func (r *RedigoDriver) Set(key string, value interface{}, secondsLifetime int64) (err error)
Set sets a key-value to the redis store. The expiration is setted by the secondsLifetime.
func (*RedigoDriver) TTL ¶
func (r *RedigoDriver) TTL(key string) (seconds int64, hasExpiration bool, found bool)
TTL returns the seconds to expire, if the key has expiration and error if action failed. Read more at: https://redis.io/commands/ttl
func (*RedigoDriver) UpdateTTL ¶
func (r *RedigoDriver) UpdateTTL(key string, newSecondsLifeTime int64) error
UpdateTTL will update the ttl of a key. Using the "EXPIRE" command. Read more at: https://redis.io/commands/expire#refreshing-expires
func (*RedigoDriver) UpdateTTLMany ¶
func (r *RedigoDriver) UpdateTTLMany(prefix string, newSecondsLifeTime int64) error
UpdateTTLMany like `UpdateTTL` but for all keys starting with that "prefix", it is a bit faster operation if you need to update all sessions keys (although it can be even faster if we used hash but this will limit other features), look the `sessions/Database#OnUpdateExpiration` for example.