miniredis: github.com/alicebob/miniredis Index | Examples | Files | Directories

package miniredis

import "github.com/alicebob/miniredis"

Package miniredis is a pure Go Redis test server, for use in Go unittests. There are no dependencies on system binaries, and every server you start will be empty.

Start a server with `s, err := miniredis.Run()`. Stop it with `defer s.Close()`.

Point your Redis client to `s.Addr()` or `s.Host(), s.Port()`.

Set keys directly via s.Set(...) and similar commands, or use a Redis client.

For direct use you can select a Redis database with either `s.Select(12); s.Get("foo")` or `s.DB(12).Get("foo")`.

Code:

s, err := miniredis.Run()
if err != nil {
    panic(err)
}
defer s.Close()

// Configure you application to connect to redis at s.Addr()
// Any redis client should work, as long as you use redis commands which
// miniredis implements.
c, err := redis.Dial("tcp", s.Addr())
if err != nil {
    panic(err)
}
if _, err = c.Do("SET", "foo", "bar"); err != nil {
    panic(err)
}

// You can ask miniredis about keys directly, without going over the network.
if got, err := s.Get("foo"); err != nil || got != "bar" {
    panic("Didn't get 'bar' back")
}
// Or with a DB id
if _, err := s.DB(42).Get("foo"); err != miniredis.ErrKeyNotFound {
    panic("didn't use a different database")
}

// Test key with expiration
s.SetTTL("foo", 60*time.Second)
s.FastForward(60 * time.Second)
if s.Exists("foo") {
    panic("expect key to be expired")
}

// Or use a Check* function which Fail()s if the key is not what we expect
// (checks for existence, key type and the value)
// s.CheckGet(t, "foo", "bar")

// Check if there really was only one connection.
if s.TotalConnectionCount() != 1 {
    panic("too many connections made")
}

Index

Examples

Package Files

check.go cmd_connection.go cmd_generic.go cmd_hash.go cmd_list.go cmd_scripting.go cmd_server.go cmd_set.go cmd_sorted_set.go cmd_string.go cmd_transactions.go db.go direct.go keys.go lua.go miniredis.go redis.go sorted_set.go

Variables

var (
    // ErrKeyNotFound is returned when a key doesn't exist.
    ErrKeyNotFound = errors.New(msgKeyNotFound)
    // ErrWrongType when a key is not the right type.
    ErrWrongType = errors.New(msgWrongType)
    // ErrIntValueError can returned by INCRBY
    ErrIntValueError = errors.New(msgInvalidInt)
    // ErrFloatValueError can returned by INCRBYFLOAT
    ErrFloatValueError = errors.New(msgInvalidFloat)
)

type Miniredis Uses

type Miniredis struct {
    sync.Mutex
    // contains filtered or unexported fields
}

Miniredis is a Redis server implementation.

func NewMiniRedis Uses

func NewMiniRedis() *Miniredis

NewMiniRedis makes a new, non-started, Miniredis object.

func Run Uses

func Run() (*Miniredis, error)

Run creates and Start()s a Miniredis.

func (*Miniredis) Addr Uses

func (m *Miniredis) Addr() string

Addr returns '127.0.0.1:12345'. Can be given to a Dial(). See also Host() and Port(), which return the same things.

func (*Miniredis) CheckGet Uses

func (m *Miniredis) CheckGet(t T, key, expected string)

CheckGet does not call Errorf() iff there is a string key with the expected value. Normal use case is `m.CheckGet(t, "username", "theking")`.

func (*Miniredis) CheckList Uses

func (m *Miniredis) CheckList(t T, key string, expected ...string)

CheckList does not call Errorf() iff there is a list key with the expected values. Normal use case is `m.CheckGet(t, "favorite_colors", "red", "green", "infrared")`.

func (*Miniredis) CheckSet Uses

func (m *Miniredis) CheckSet(t T, key string, expected ...string)

CheckSet does not call Errorf() iff there is a set key with the expected values. Normal use case is `m.CheckSet(t, "visited", "Rome", "Stockholm", "Dublin")`.

func (*Miniredis) Close Uses

func (m *Miniredis) Close()

Close shuts down a Miniredis.

func (*Miniredis) CommandCount Uses

func (m *Miniredis) CommandCount() int

CommandCount returns the number of processed commands.

func (*Miniredis) CurrentConnectionCount Uses

func (m *Miniredis) CurrentConnectionCount() int

CurrentConnectionCount returns the number of currently connected clients.

func (*Miniredis) DB Uses

func (m *Miniredis) DB(i int) *RedisDB

DB returns a DB by ID.

func (*Miniredis) Del Uses

func (m *Miniredis) Del(k string) bool

Del deletes a key and any expiration value. Returns whether there was a key.

func (*Miniredis) Dump Uses

func (m *Miniredis) Dump() string

Dump returns a text version of the selected DB, usable for debugging.

func (*Miniredis) Exists Uses

func (m *Miniredis) Exists(k string) bool

Exists tells whether a key exists.

func (*Miniredis) FastForward Uses

func (m *Miniredis) FastForward(duration time.Duration)

FastForward decreases all TTLs by the given duration. All TTLs <= 0 will be expired.

func (*Miniredis) FlushAll Uses

func (m *Miniredis) FlushAll()

FlushAll removes all keys from all databases.

func (*Miniredis) FlushDB Uses

func (m *Miniredis) FlushDB()

FlushDB removes all keys from the selected database.

func (*Miniredis) Get Uses

func (m *Miniredis) Get(k string) (string, error)

Get returns string keys added with SET.

func (*Miniredis) HDel Uses

func (m *Miniredis) HDel(k, f string)

HDel deletes a hash key.

func (*Miniredis) HGet Uses

func (m *Miniredis) HGet(k, f string) string

HGet returns hash keys added with HSET. This will return an empty string if the key is not set. Redis would return a nil. Returns empty string when the key is of a different type.

func (*Miniredis) HIncr Uses

func (m *Miniredis) HIncr(k, f string, delta int) (int, error)

HIncr increases a key/field by delta (int).

func (*Miniredis) HIncrfloat Uses

func (m *Miniredis) HIncrfloat(k, f string, delta float64) (float64, error)

HIncrfloat increases a key/field by delta (float).

func (*Miniredis) HKeys Uses

func (m *Miniredis) HKeys(k string) ([]string, error)

HKeys returns all (sorted) keys ('fields') for a hash key.

func (*Miniredis) HSet Uses

func (m *Miniredis) HSet(k, f, v string)

HSet sets a hash key. If there is another key by the same name it will be gone.

func (*Miniredis) Host Uses

func (m *Miniredis) Host() string

Host returns the host part of Addr().

func (*Miniredis) Incr Uses

func (m *Miniredis) Incr(k string, delta int) (int, error)

Incr changes a int string value by delta.

func (*Miniredis) Incrfloat Uses

func (m *Miniredis) Incrfloat(k string, delta float64) (float64, error)

Incrfloat changes a float string value by delta.

func (*Miniredis) IsMember Uses

func (m *Miniredis) IsMember(k, v string) (bool, error)

IsMember tells if value is in the set.

func (*Miniredis) Keys Uses

func (m *Miniredis) Keys() []string

Keys returns all keys from the selected database, sorted.

func (*Miniredis) List Uses

func (m *Miniredis) List(k string) ([]string, error)

List returns the list k, or an error if it's not there or something else. This is the same as the Redis command `LRANGE 0 -1`, but you can do your own range-ing.

func (*Miniredis) Lpop Uses

func (m *Miniredis) Lpop(k string) (string, error)

Lpop is a shift. Returns the popped element.

func (*Miniredis) Lpush Uses

func (m *Miniredis) Lpush(k, v string) (int, error)

Lpush is an unshift. Returns the new length.

func (*Miniredis) Members Uses

func (m *Miniredis) Members(k string) ([]string, error)

Members gives all set keys. Sorted.

func (*Miniredis) Pop Uses

func (m *Miniredis) Pop(k string) (string, error)

Pop removes and returns the last element. Is called RPOP in Redis.

func (*Miniredis) Port Uses

func (m *Miniredis) Port() string

Port returns the (random) port part of Addr().

func (*Miniredis) Push Uses

func (m *Miniredis) Push(k string, v ...string) (int, error)

Push add element at the end. Is called RPUSH in redis. Returns the new length.

func (*Miniredis) RequireAuth Uses

func (m *Miniredis) RequireAuth(pw string)

RequireAuth makes every connection need to AUTH first. Disable again by setting an empty string.

func (*Miniredis) Restart Uses

func (m *Miniredis) Restart() error

Restart restarts a Close()d server on the same port. Values will be preserved.

func (*Miniredis) SRem Uses

func (m *Miniredis) SRem(k string, fields ...string) (int, error)

SRem removes fields from a set. Returns number of deleted fields.

func (*Miniredis) Select Uses

func (m *Miniredis) Select(i int)

Select sets the DB id for all direct commands.

func (*Miniredis) Set Uses

func (m *Miniredis) Set(k, v string) error

Set sets a string key. Removes expire.

func (*Miniredis) SetAdd Uses

func (m *Miniredis) SetAdd(k string, elems ...string) (int, error)

SetAdd adds keys to a set. Returns the number of new keys.

func (*Miniredis) SetTTL Uses

func (m *Miniredis) SetTTL(k string, ttl time.Duration)

SetTTL sets the TTL of a key.

func (*Miniredis) SetTime Uses

func (m *Miniredis) SetTime(t time.Time)

SetTime sets the time against which EXPIREAT values are compared. EXPIREAT will use time.Now() if this is not set.

func (*Miniredis) SortedSet Uses

func (m *Miniredis) SortedSet(k string) (map[string]float64, error)

SortedSet returns a raw string->float64 map.

func (*Miniredis) Start Uses

func (m *Miniredis) Start() error

Start starts a server. It listens on a random port on localhost. See also Addr().

func (*Miniredis) StartAddr Uses

func (m *Miniredis) StartAddr(addr string) error

StartAddr runs miniredis with a given addr. Examples: "127.0.0.1:6379", ":6379", or "127.0.0.1:0"

func (*Miniredis) TTL Uses

func (m *Miniredis) TTL(k string) time.Duration

TTL is the left over time to live. As set via EXPIRE, PEXPIRE, EXPIREAT, PEXPIREAT. 0 if not set.

func (*Miniredis) TotalConnectionCount Uses

func (m *Miniredis) TotalConnectionCount() int

TotalConnectionCount returns the number of client connections since server start.

func (*Miniredis) Type Uses

func (m *Miniredis) Type(k string) string

Type gives the type of a key, or ""

func (*Miniredis) ZAdd Uses

func (m *Miniredis) ZAdd(k string, score float64, member string) (bool, error)

ZAdd adds a score,member to a sorted set.

func (*Miniredis) ZMembers Uses

func (m *Miniredis) ZMembers(k string) ([]string, error)

ZMembers returns all members by score

func (*Miniredis) ZRem Uses

func (m *Miniredis) ZRem(k, member string) (bool, error)

ZRem deletes a member. Returns whether the was a key.

func (*Miniredis) ZScore Uses

func (m *Miniredis) ZScore(k, member string) (float64, error)

ZScore gives the score of a sorted set member.

type RedisDB Uses

type RedisDB struct {
    // contains filtered or unexported fields
}

RedisDB holds a single (numbered) Redis database.

func (*RedisDB) Del Uses

func (db *RedisDB) Del(k string) bool

Del deletes a key and any expiration value. Returns whether there was a key.

func (*RedisDB) Exists Uses

func (db *RedisDB) Exists(k string) bool

Exists tells whether a key exists.

func (*RedisDB) FlushDB Uses

func (db *RedisDB) FlushDB()

FlushDB removes all keys.

func (*RedisDB) Get Uses

func (db *RedisDB) Get(k string) (string, error)

Get returns a string key.

func (*RedisDB) HDel Uses

func (db *RedisDB) HDel(k, f string)

HDel deletes a hash key.

func (*RedisDB) HGet Uses

func (db *RedisDB) HGet(k, f string) string

HGet returns hash keys added with HSET. Returns empty string when the key is of a different type.

func (*RedisDB) HIncr Uses

func (db *RedisDB) HIncr(k, f string, delta int) (int, error)

HIncr increases a key/field by delta (int).

func (*RedisDB) HIncrfloat Uses

func (db *RedisDB) HIncrfloat(k, f string, delta float64) (float64, error)

HIncrfloat increases a key/field by delta (float).

func (*RedisDB) HKeys Uses

func (db *RedisDB) HKeys(key string) ([]string, error)

HKeys returns all (sorted) keys ('fields') for a hash key.

func (*RedisDB) HSet Uses

func (db *RedisDB) HSet(k, f, v string)

HSet sets a hash key. If there is another key by the same name it will be gone.

func (*RedisDB) Incr Uses

func (db *RedisDB) Incr(k string, delta int) (int, error)

Incr changes a int string value by delta.

func (*RedisDB) Incrfloat Uses

func (db *RedisDB) Incrfloat(k string, delta float64) (float64, error)

Incrfloat changes a float string value by delta.

func (*RedisDB) IsMember Uses

func (db *RedisDB) IsMember(k, v string) (bool, error)

IsMember tells if value is in the set.

func (*RedisDB) Keys Uses

func (db *RedisDB) Keys() []string

Keys returns all keys, sorted.

func (*RedisDB) List Uses

func (db *RedisDB) List(k string) ([]string, error)

List returns the list k, or an error if it's not there or something else. This is the same as the Redis command `LRANGE 0 -1`, but you can do your own range-ing.

func (*RedisDB) Lpop Uses

func (db *RedisDB) Lpop(k string) (string, error)

Lpop is a shift. Returns the popped element.

func (*RedisDB) Lpush Uses

func (db *RedisDB) Lpush(k, v string) (int, error)

Lpush is an unshift. Returns the new length.

func (*RedisDB) Members Uses

func (db *RedisDB) Members(k string) ([]string, error)

Members gives all set keys. Sorted.

func (*RedisDB) Pop Uses

func (db *RedisDB) Pop(k string) (string, error)

Pop removes and returns the last element. Is called RPOP in Redis.

func (*RedisDB) Push Uses

func (db *RedisDB) Push(k string, v ...string) (int, error)

Push add element at the end. Is called RPUSH in redis. Returns the new length.

func (*RedisDB) SRem Uses

func (db *RedisDB) SRem(k string, fields ...string) (int, error)

SRem removes fields from a set. Returns number of deleted fields.

func (*RedisDB) Set Uses

func (db *RedisDB) Set(k, v string) error

Set sets a string key. Removes expire. Unlike redis the key can't be an existing non-string key.

func (*RedisDB) SetAdd Uses

func (db *RedisDB) SetAdd(k string, elems ...string) (int, error)

SetAdd adds keys to a set. Returns the number of new keys.

func (*RedisDB) SetTTL Uses

func (db *RedisDB) SetTTL(k string, ttl time.Duration)

SetTTL sets the time to live of a key.

func (*RedisDB) SortedSet Uses

func (db *RedisDB) SortedSet(k string) (map[string]float64, error)

SortedSet returns a raw string->float64 map.

func (*RedisDB) TTL Uses

func (db *RedisDB) TTL(k string) time.Duration

TTL is the left over time to live. As set via EXPIRE, PEXPIRE, EXPIREAT, PEXPIREAT. 0 if not set.

func (*RedisDB) Type Uses

func (db *RedisDB) Type(k string) string

Type gives the type of a key, or ""

func (*RedisDB) ZAdd Uses

func (db *RedisDB) ZAdd(k string, score float64, member string) (bool, error)

ZAdd adds a score,member to a sorted set.

func (*RedisDB) ZMembers Uses

func (db *RedisDB) ZMembers(k string) ([]string, error)

ZMembers returns all members by score

func (*RedisDB) ZRem Uses

func (db *RedisDB) ZRem(k, member string) (bool, error)

ZRem deletes a member. Returns whether the was a key.

func (*RedisDB) ZScore Uses

func (db *RedisDB) ZScore(k, member string) (float64, error)

ZScore gives the score of a sorted set member.

type T Uses

type T interface {
    Fail()
}

T is implemented by Testing.T

Directories

PathSynopsis
server

Package miniredis imports 23 packages (graph) and is imported by 6 packages. Updated 2019-01-09. Refresh now. Tools for package owners.