redis

package module
v4.1.12+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2016 License: BSD-2-Clause Imports: 20 Imported by: 0

README ¶

Redis client for Golang Build Status

Supports:

API docs: http://godoc.org/gopkg.in/redis.v4. Examples: http://godoc.org/gopkg.in/redis.v4#pkg-examples.

Installation

Install:

go get gopkg.in/redis.v4

Quickstart

func ExampleNewClient() {
	client := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "", // no password set
		DB:       0,  // use default DB
	})

	pong, err := client.Ping().Result()
	fmt.Println(pong, err)
	// Output: PONG <nil>
}

func ExampleClient() {
	err := client.Set("key", "value", 0).Err()
	if err != nil {
		panic(err)
	}

	val, err := client.Get("key").Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("key", val)

	val2, err := client.Get("key2").Result()
	if err == redis.Nil {
		fmt.Println("key2 does not exists")
	} else if err != nil {
		panic(err)
	} else {
		fmt.Println("key2", val2)
	}
	// Output: key value
	// key2 does not exists
}

Howto

Please go through examples to get an idea how to use this package.

Look and feel

Some corner cases:

SET key value EX 10 NX
set, err := client.SetNX("key", "value", 10*time.Second).Result()

SORT list LIMIT 0 2 ASC
vals, err := client.Sort("list", redis.Sort{Offset: 0, Count: 2, Order: "ASC"}).Result()

ZRANGEBYSCORE zset -inf +inf WITHSCORES LIMIT 0 2
vals, err := client.ZRangeByScoreWithScores("zset", redis.ZRangeByScore{
    Min: "-inf",
    Max: "+inf",
    Offset: 0,
    Count: 2,
}).Result()

ZINTERSTORE out 2 zset1 zset2 WEIGHTS 2 3 AGGREGATE SUM
vals, err := client.ZInterStore("out", redis.ZStore{Weights: []int64{2, 3}}, "zset1", "zset2").Result()

EVAL "return {KEYS[1],ARGV[1]}" 1 "key" "hello"
vals, err := client.Eval("return {KEYS[1],ARGV[1]}", []string{"key"}, []string{"hello"}).Result()

Benchmark

go-redis vs redigo:

BenchmarkSetGoRedis10Conns64Bytes-4 	  200000	      7621 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis100Conns64Bytes-4	  200000	      7554 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis10Conns1KB-4     	  200000	      7697 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis100Conns1KB-4    	  200000	      7688 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis10Conns10KB-4    	  200000	      9214 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis100Conns10KB-4   	  200000	      9181 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis10Conns1MB-4     	    2000	    583242 ns/op	    2337 B/op	       6 allocs/op
BenchmarkSetGoRedis100Conns1MB-4    	    2000	    583089 ns/op	    2338 B/op	       6 allocs/op
BenchmarkSetRedigo10Conns64Bytes-4  	  200000	      7576 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo100Conns64Bytes-4 	  200000	      7782 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo10Conns1KB-4      	  200000	      7958 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo100Conns1KB-4     	  200000	      7725 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo10Conns10KB-4     	  100000	     18442 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo100Conns10KB-4    	  100000	     18818 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo10Conns1MB-4      	    2000	    668829 ns/op	     226 B/op	       7 allocs/op
BenchmarkSetRedigo100Conns1MB-4     	    2000	    679542 ns/op	     226 B/op	       7 allocs/op

Redis Cluster:

BenchmarkRedisPing-4                	  200000	      6983 ns/op	     116 B/op	       4 allocs/op
BenchmarkRedisClusterPing-4         	  100000	     11535 ns/op	     117 B/op	       4 allocs/op

Shameless plug

Check my PostgreSQL client for Go.

Documentation ¶

Overview ¶

Package redis implements a Redis client.

Example (CustomCommand) ¶
Get := func(client *redis.Client, key string) *redis.StringCmd {
	cmd := redis.NewStringCmd("GET", key)
	client.Process(cmd)
	return cmd
}

v, err := Get(client, "key_does_not_exist").Result()
fmt.Printf("%q %s", v, err)
Output:

"" redis: nil

Index ¶

Examples ¶

Constants ¶

View Source
const Nil = errors.Nil

Redis nil reply, .e.g. when key does not exist.

View Source
const TxFailedErr = ierrors.RedisError("redis: transaction failed")

Redis transaction failed.

Variables ¶

This section is empty.

Functions ¶

func SetLogger ¶

func SetLogger(logger *log.Logger)

Types ¶

type BitCount ¶

type BitCount struct {
	Start, End int64
}

type BoolCmd ¶

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

func NewBoolCmd ¶

func NewBoolCmd(args ...interface{}) *BoolCmd

func NewBoolResult ¶

func NewBoolResult(val bool, err error) *BoolCmd

NewBoolResult returns a BoolCmd initalised with val and err for testing

func (*BoolCmd) Err ¶

func (cmd *BoolCmd) Err() error

func (*BoolCmd) Result ¶

func (cmd *BoolCmd) Result() (bool, error)

func (*BoolCmd) String ¶

func (cmd *BoolCmd) String() string

func (*BoolCmd) Val ¶

func (cmd *BoolCmd) Val() bool

type BoolSliceCmd ¶

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

func NewBoolSliceCmd ¶

func NewBoolSliceCmd(args ...interface{}) *BoolSliceCmd

func NewBoolSliceResult ¶

func NewBoolSliceResult(val []bool, err error) *BoolSliceCmd

NewBoolSliceResult returns a BoolSliceCmd initalised with val and err for testing

func (*BoolSliceCmd) Err ¶

func (cmd *BoolSliceCmd) Err() error

func (*BoolSliceCmd) Result ¶

func (cmd *BoolSliceCmd) Result() ([]bool, error)

func (*BoolSliceCmd) String ¶

func (cmd *BoolSliceCmd) String() string

func (*BoolSliceCmd) Val ¶

func (cmd *BoolSliceCmd) Val() []bool

type Client ¶

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

Client is a Redis client representing a pool of zero or more underlying connections. It's safe for concurrent use by multiple goroutines.

Example ¶
err := client.Set("key", "value", 0).Err()
if err != nil {
	panic(err)
}

val, err := client.Get("key").Result()
if err != nil {
	panic(err)
}
fmt.Println("key", val)

val2, err := client.Get("key2").Result()
if err == redis.Nil {
	fmt.Println("key2 does not exists")
} else if err != nil {
	panic(err)
} else {
	fmt.Println("key2", val2)
}
Output:

key value
key2 does not exists

func NewClient ¶

func NewClient(opt *Options) *Client

NewClient returns a client to the Redis Server specified by Options.

Example ¶
client := redis.NewClient(&redis.Options{
	Addr:     "localhost:6379",
	Password: "", // no password set
	DB:       0,  // use default DB
})

pong, err := client.Ping().Result()
fmt.Println(pong, err)
Output:

PONG <nil>

func NewFailoverClient ¶

func NewFailoverClient(failoverOpt *FailoverOptions) *Client

NewFailoverClient returns a Redis client that uses Redis Sentinel for automatic failover. It's safe for concurrent use by multiple goroutines.

Example ¶
// See http://redis.io/topics/sentinel for instructions how to
// setup Redis Sentinel.
client := redis.NewFailoverClient(&redis.FailoverOptions{
	MasterName:    "master",
	SentinelAddrs: []string{":26379"},
})
client.Ping()
Output:

func (*Client) Append ¶

func (c *Client) Append(key, value string) *IntCmd

func (*Client) BLPop ¶

func (c *Client) BLPop(timeout time.Duration, keys ...string) *StringSliceCmd
Example ¶
if err := client.RPush("queue", "message").Err(); err != nil {
	panic(err)
}

// use `client.BLPop(0, "queue")` for infinite waiting time
result, err := client.BLPop(1*time.Second, "queue").Result()
if err != nil {
	panic(err)
}

fmt.Println(result[0], result[1])
Output:

queue message

func (*Client) BRPop ¶

func (c *Client) BRPop(timeout time.Duration, keys ...string) *StringSliceCmd

func (*Client) BRPopLPush ¶

func (c *Client) BRPopLPush(source, destination string, timeout time.Duration) *StringCmd

func (*Client) BgRewriteAOF ¶

func (c *Client) BgRewriteAOF() *StatusCmd

func (*Client) BgSave ¶

func (c *Client) BgSave() *StatusCmd

func (*Client) BitCount ¶

func (c *Client) BitCount(key string, bitCount *BitCount) *IntCmd

func (*Client) BitOpAnd ¶

func (c *Client) BitOpAnd(destKey string, keys ...string) *IntCmd

func (*Client) BitOpNot ¶

func (c *Client) BitOpNot(destKey string, key string) *IntCmd

func (*Client) BitOpOr ¶

func (c *Client) BitOpOr(destKey string, keys ...string) *IntCmd

func (*Client) BitOpXor ¶

func (c *Client) BitOpXor(destKey string, keys ...string) *IntCmd

func (*Client) BitPos ¶

func (c *Client) BitPos(key string, bit int64, pos ...int64) *IntCmd

func (*Client) ClientGetName ¶

func (c *Client) ClientGetName() *StringCmd

ClientGetName returns the name of the one of many connections in the pool.

func (*Client) ClientKill ¶

func (c *Client) ClientKill(ipPort string) *StatusCmd

func (*Client) ClientList ¶

func (c *Client) ClientList() *StringCmd

func (*Client) ClientPause ¶

func (c *Client) ClientPause(dur time.Duration) *BoolCmd

func (*Client) ClientSetName ¶

func (c *Client) ClientSetName(name string) *BoolCmd

ClientSetName assigns a name to the one of many connections in the pool.

func (*Client) Close ¶

func (c *Client) Close() error

Close closes the client, releasing any open resources.

It is rare to Close a Client, as the Client is meant to be long-lived and shared between many goroutines.

func (*Client) ClusterAddSlots ¶

func (c *Client) ClusterAddSlots(slots ...int) *StatusCmd

func (*Client) ClusterAddSlotsRange ¶

func (c *Client) ClusterAddSlotsRange(min, max int) *StatusCmd

func (*Client) ClusterCountFailureReports ¶

func (c *Client) ClusterCountFailureReports(nodeID string) *IntCmd

func (*Client) ClusterCountKeysInSlot ¶

func (c *Client) ClusterCountKeysInSlot(slot int) *IntCmd

func (*Client) ClusterDelSlots ¶

func (c *Client) ClusterDelSlots(slots ...int) *StatusCmd

func (*Client) ClusterDelSlotsRange ¶

func (c *Client) ClusterDelSlotsRange(min, max int) *StatusCmd

func (*Client) ClusterFailover ¶

func (c *Client) ClusterFailover() *StatusCmd

func (*Client) ClusterForget ¶

func (c *Client) ClusterForget(nodeID string) *StatusCmd

func (*Client) ClusterInfo ¶

func (c *Client) ClusterInfo() *StringCmd

func (*Client) ClusterKeySlot ¶

func (c *Client) ClusterKeySlot(key string) *IntCmd

func (*Client) ClusterMeet ¶

func (c *Client) ClusterMeet(host, port string) *StatusCmd

func (*Client) ClusterNodes ¶

func (c *Client) ClusterNodes() *StringCmd

func (*Client) ClusterReplicate ¶

func (c *Client) ClusterReplicate(nodeID string) *StatusCmd

func (*Client) ClusterResetHard ¶

func (c *Client) ClusterResetHard() *StatusCmd

func (*Client) ClusterResetSoft ¶

func (c *Client) ClusterResetSoft() *StatusCmd

func (*Client) ClusterSaveConfig ¶

func (c *Client) ClusterSaveConfig() *StatusCmd

func (*Client) ClusterSlaves ¶

func (c *Client) ClusterSlaves(nodeID string) *StringSliceCmd

func (*Client) ClusterSlots ¶

func (c *Client) ClusterSlots() *ClusterSlotsCmd

func (*Client) Command ¶

func (c *Client) Command() *CommandsInfoCmd

func (*Client) ConfigGet ¶

func (c *Client) ConfigGet(parameter string) *SliceCmd

func (*Client) ConfigResetStat ¶

func (c *Client) ConfigResetStat() *StatusCmd

func (*Client) ConfigSet ¶

func (c *Client) ConfigSet(parameter, value string) *StatusCmd

func (*Client) DbSize ¶

func (c *Client) DbSize() *IntCmd

func (*Client) DebugObject ¶

func (c *Client) DebugObject(key string) *StringCmd

func (*Client) Decr ¶

func (c *Client) Decr(key string) *IntCmd

func (*Client) DecrBy ¶

func (c *Client) DecrBy(key string, decrement int64) *IntCmd

func (*Client) Del ¶

func (c *Client) Del(keys ...string) *IntCmd

func (*Client) Dump ¶

func (c *Client) Dump(key string) *StringCmd

func (*Client) Echo ¶

func (c *Client) Echo(message interface{}) *StringCmd

func (*Client) Eval ¶

func (c *Client) Eval(script string, keys []string, args ...interface{}) *Cmd

func (*Client) EvalSha ¶

func (c *Client) EvalSha(sha1 string, keys []string, args ...interface{}) *Cmd

func (*Client) Exists ¶

func (c *Client) Exists(key string) *BoolCmd

func (*Client) Expire ¶

func (c *Client) Expire(key string, expiration time.Duration) *BoolCmd

func (*Client) ExpireAt ¶

func (c *Client) ExpireAt(key string, tm time.Time) *BoolCmd

func (*Client) FlushAll ¶

func (c *Client) FlushAll() *StatusCmd

func (*Client) FlushDb ¶

func (c *Client) FlushDb() *StatusCmd

func (*Client) GeoAdd ¶

func (c *Client) GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd

func (*Client) GeoDist ¶

func (c *Client) GeoDist(key string, member1, member2, unit string) *FloatCmd

func (*Client) GeoHash ¶

func (c *Client) GeoHash(key string, members ...string) *StringSliceCmd

func (*Client) GeoPos ¶

func (c *Client) GeoPos(key string, members ...string) *GeoPosCmd

func (*Client) GeoRadius ¶

func (c *Client) GeoRadius(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd

func (*Client) GeoRadiusByMember ¶

func (c *Client) GeoRadiusByMember(key, member string, query *GeoRadiusQuery) *GeoLocationCmd

func (*Client) Get ¶

func (c *Client) Get(key string) *StringCmd

func (*Client) GetBit ¶

func (c *Client) GetBit(key string, offset int64) *IntCmd

func (*Client) GetRange ¶

func (c *Client) GetRange(key string, start, end int64) *StringCmd

func (*Client) GetSet ¶

func (c *Client) GetSet(key string, value interface{}) *StringCmd

func (*Client) HDel ¶

func (c *Client) HDel(key string, fields ...string) *IntCmd

func (*Client) HExists ¶

func (c *Client) HExists(key, field string) *BoolCmd

func (*Client) HGet ¶

func (c *Client) HGet(key, field string) *StringCmd

func (*Client) HGetAll ¶

func (c *Client) HGetAll(key string) *StringStringMapCmd

func (*Client) HIncrBy ¶

func (c *Client) HIncrBy(key, field string, incr int64) *IntCmd

func (*Client) HIncrByFloat ¶

func (c *Client) HIncrByFloat(key, field string, incr float64) *FloatCmd

func (*Client) HKeys ¶

func (c *Client) HKeys(key string) *StringSliceCmd

func (*Client) HLen ¶

func (c *Client) HLen(key string) *IntCmd

func (*Client) HMGet ¶

func (c *Client) HMGet(key string, fields ...string) *SliceCmd

func (*Client) HMSet ¶

func (c *Client) HMSet(key string, fields map[string]string) *StatusCmd

func (*Client) HScan ¶

func (c *Client) HScan(key string, cursor uint64, match string, count int64) Scanner

func (*Client) HSet ¶

func (c *Client) HSet(key, field, value string) *BoolCmd

func (*Client) HSetNX ¶

func (c *Client) HSetNX(key, field, value string) *BoolCmd

func (*Client) HVals ¶

func (c *Client) HVals(key string) *StringSliceCmd

func (*Client) Incr ¶

func (c *Client) Incr(key string) *IntCmd
Example ¶
if err := client.Incr("counter").Err(); err != nil {
	panic(err)
}

n, err := client.Get("counter").Int64()
fmt.Println(n, err)
Output:

1 <nil>

func (*Client) IncrBy ¶

func (c *Client) IncrBy(key string, value int64) *IntCmd

func (*Client) IncrByFloat ¶

func (c *Client) IncrByFloat(key string, value float64) *FloatCmd

func (*Client) Info ¶

func (c *Client) Info(section ...string) *StringCmd

func (*Client) Keys ¶

func (c *Client) Keys(pattern string) *StringSliceCmd

func (*Client) LIndex ¶

func (c *Client) LIndex(key string, index int64) *StringCmd

func (*Client) LInsert ¶

func (c *Client) LInsert(key, op string, pivot, value interface{}) *IntCmd

func (*Client) LInsertAfter ¶

func (c *Client) LInsertAfter(key string, pivot, value interface{}) *IntCmd

func (*Client) LInsertBefore ¶

func (c *Client) LInsertBefore(key string, pivot, value interface{}) *IntCmd

func (*Client) LLen ¶

func (c *Client) LLen(key string) *IntCmd

func (*Client) LPop ¶

func (c *Client) LPop(key string) *StringCmd

func (*Client) LPush ¶

func (c *Client) LPush(key string, values ...interface{}) *IntCmd

func (*Client) LPushX ¶

func (c *Client) LPushX(key string, value interface{}) *IntCmd

func (*Client) LRange ¶

func (c *Client) LRange(key string, start, stop int64) *StringSliceCmd

func (*Client) LRem ¶

func (c *Client) LRem(key string, count int64, value interface{}) *IntCmd

func (*Client) LSet ¶

func (c *Client) LSet(key string, index int64, value interface{}) *StatusCmd

func (*Client) LTrim ¶

func (c *Client) LTrim(key string, start, stop int64) *StatusCmd

func (*Client) LastSave ¶

func (c *Client) LastSave() *IntCmd

func (*Client) MGet ¶

func (c *Client) MGet(keys ...string) *SliceCmd

func (*Client) MSet ¶

func (c *Client) MSet(pairs ...interface{}) *StatusCmd

func (*Client) MSetNX ¶

func (c *Client) MSetNX(pairs ...interface{}) *BoolCmd

func (*Client) Migrate ¶

func (c *Client) Migrate(host, port, key string, db int64, timeout time.Duration) *StatusCmd

func (*Client) Move ¶

func (c *Client) Move(key string, db int64) *BoolCmd

func (*Client) ObjectEncoding ¶

func (c *Client) ObjectEncoding(keys ...string) *StringCmd

func (*Client) ObjectIdleTime ¶

func (c *Client) ObjectIdleTime(keys ...string) *DurationCmd

func (*Client) ObjectRefCount ¶

func (c *Client) ObjectRefCount(keys ...string) *IntCmd

func (*Client) PExpire ¶

func (c *Client) PExpire(key string, expiration time.Duration) *BoolCmd

func (*Client) PExpireAt ¶

func (c *Client) PExpireAt(key string, tm time.Time) *BoolCmd

func (*Client) PFAdd ¶

func (c *Client) PFAdd(key string, els ...interface{}) *IntCmd

func (*Client) PFCount ¶

func (c *Client) PFCount(keys ...string) *IntCmd

func (*Client) PFMerge ¶

func (c *Client) PFMerge(dest string, keys ...string) *StatusCmd

func (*Client) PSubscribe ¶

func (c *Client) PSubscribe(channels ...string) (*PubSub, error)

PSubscribe subscribes the client to the given patterns.

func (*Client) PTTL ¶

func (c *Client) PTTL(key string) *DurationCmd

func (*Client) Persist ¶

func (c *Client) Persist(key string) *BoolCmd

func (*Client) Ping ¶

func (c *Client) Ping() *StatusCmd

func (*Client) Pipeline ¶

func (c *Client) Pipeline() *Pipeline

func (*Client) Pipelined ¶

func (c *Client) Pipelined(fn func(*Pipeline) error) ([]Cmder, error)
Example ¶
var incr *redis.IntCmd
_, err := client.Pipelined(func(pipe *redis.Pipeline) error {
	incr = pipe.Incr("counter1")
	pipe.Expire("counter1", time.Hour)
	return nil
})
fmt.Println(incr.Val(), err)
Output:

1 <nil>

func (*Client) PoolStats ¶

func (c *Client) PoolStats() *PoolStats

PoolStats returns connection pool stats.

func (*Client) Process ¶

func (c *Client) Process(cmd Cmder) error

func (*Client) PubSubChannels ¶

func (c *Client) PubSubChannels(pattern string) *StringSliceCmd

func (*Client) PubSubNumPat ¶

func (c *Client) PubSubNumPat() *IntCmd

func (*Client) PubSubNumSub ¶

func (c *Client) PubSubNumSub(channels ...string) *StringIntMapCmd

func (*Client) Publish ¶

func (c *Client) Publish(channel, message string) *IntCmd

Publish posts the message to the channel.

func (*Client) Quit ¶

func (c *Client) Quit() *StatusCmd

func (*Client) RPop ¶

func (c *Client) RPop(key string) *StringCmd

func (*Client) RPopLPush ¶

func (c *Client) RPopLPush(source, destination string) *StringCmd

func (*Client) RPush ¶

func (c *Client) RPush(key string, values ...interface{}) *IntCmd

func (*Client) RPushX ¶

func (c *Client) RPushX(key string, value interface{}) *IntCmd

func (*Client) RandomKey ¶

func (c *Client) RandomKey() *StringCmd

func (*Client) Rename ¶

func (c *Client) Rename(key, newkey string) *StatusCmd

func (*Client) RenameNX ¶

func (c *Client) RenameNX(key, newkey string) *BoolCmd

func (*Client) Restore ¶

func (c *Client) Restore(key string, ttl time.Duration, value string) *StatusCmd

func (*Client) RestoreReplace ¶

func (c *Client) RestoreReplace(key string, ttl time.Duration, value string) *StatusCmd

func (*Client) SAdd ¶

func (c *Client) SAdd(key string, members ...interface{}) *IntCmd

func (*Client) SCard ¶

func (c *Client) SCard(key string) *IntCmd

func (*Client) SDiff ¶

func (c *Client) SDiff(keys ...string) *StringSliceCmd

func (*Client) SDiffStore ¶

func (c *Client) SDiffStore(destination string, keys ...string) *IntCmd

func (*Client) SInter ¶

func (c *Client) SInter(keys ...string) *StringSliceCmd

func (*Client) SInterStore ¶

func (c *Client) SInterStore(destination string, keys ...string) *IntCmd

func (*Client) SIsMember ¶

func (c *Client) SIsMember(key string, member interface{}) *BoolCmd

func (*Client) SMembers ¶

func (c *Client) SMembers(key string) *StringSliceCmd

func (*Client) SMove ¶

func (c *Client) SMove(source, destination string, member interface{}) *BoolCmd

func (*Client) SPop ¶

func (c *Client) SPop(key string) *StringCmd

Redis `SPOP key` command.

func (*Client) SPopN ¶

func (c *Client) SPopN(key string, count int64) *StringSliceCmd

Redis `SPOP key count` command.

func (*Client) SRandMember ¶

func (c *Client) SRandMember(key string) *StringCmd

Redis `SRANDMEMBER key` command.

func (*Client) SRandMemberN ¶

func (c *Client) SRandMemberN(key string, count int64) *StringSliceCmd

Redis `SRANDMEMBER key count` command.

func (*Client) SRem ¶

func (c *Client) SRem(key string, members ...interface{}) *IntCmd

func (*Client) SScan ¶

func (c *Client) SScan(key string, cursor uint64, match string, count int64) Scanner

func (*Client) SUnion ¶

func (c *Client) SUnion(keys ...string) *StringSliceCmd

func (*Client) SUnionStore ¶

func (c *Client) SUnionStore(destination string, keys ...string) *IntCmd

func (*Client) Save ¶

func (c *Client) Save() *StatusCmd

func (*Client) Scan ¶

func (c *Client) Scan(cursor uint64, match string, count int64) Scanner
Example ¶
client.FlushDb()
for i := 0; i < 33; i++ {
	err := client.Set(fmt.Sprintf("key%d", i), "value", 0).Err()
	if err != nil {
		panic(err)
	}
}

var cursor uint64
var n int
for {
	var keys []string
	var err error
	keys, cursor, err = client.Scan(cursor, "", 10).Result()
	if err != nil {
		panic(err)
	}
	n += len(keys)
	if cursor == 0 {
		break
	}
}

fmt.Printf("found %d keys\n", n)
Output:

found 33 keys

func (*Client) ScriptExists ¶

func (c *Client) ScriptExists(scripts ...string) *BoolSliceCmd

func (*Client) ScriptFlush ¶

func (c *Client) ScriptFlush() *StatusCmd

func (*Client) ScriptKill ¶

func (c *Client) ScriptKill() *StatusCmd

func (*Client) ScriptLoad ¶

func (c *Client) ScriptLoad(script string) *StringCmd

func (*Client) Set ¶

func (c *Client) Set(key string, value interface{}, expiration time.Duration) *StatusCmd

Redis `SET key value [expiration]` command.

Zero expiration means the key has no expiration time.

Example ¶
// Last argument is expiration. Zero means the key has no
// expiration time.
err := client.Set("key", "value", 0).Err()
if err != nil {
	panic(err)
}

// key2 will expire in an hour.
err = client.Set("key2", "value", time.Hour).Err()
if err != nil {
	panic(err)
}
Output:

func (*Client) SetBit ¶

func (c *Client) SetBit(key string, offset int64, value int) *IntCmd

func (*Client) SetNX ¶

func (c *Client) SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd

Redis `SET key value [expiration] NX` command.

Zero expiration means the key has no expiration time.

func (*Client) SetRange ¶

func (c *Client) SetRange(key string, offset int64, value string) *IntCmd

func (*Client) SetXX ¶

func (c *Client) SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd

Redis `SET key value [expiration] XX` command.

Zero expiration means the key has no expiration time.

func (*Client) Shutdown ¶

func (c *Client) Shutdown() *StatusCmd

func (*Client) ShutdownNoSave ¶

func (c *Client) ShutdownNoSave() *StatusCmd

func (*Client) ShutdownSave ¶

func (c *Client) ShutdownSave() *StatusCmd

func (*Client) SlaveOf ¶

func (c *Client) SlaveOf(host, port string) *StatusCmd

func (*Client) SlowLog ¶

func (c *Client) SlowLog()

func (*Client) Sort ¶

func (c *Client) Sort(key string, sort Sort) *StringSliceCmd

func (*Client) SortInterfaces ¶

func (c *Client) SortInterfaces(key string, sort Sort) *SliceCmd

func (*Client) StrLen ¶

func (c *Client) StrLen(key string) *IntCmd

func (*Client) String ¶

func (c *Client) String() string

func (*Client) Subscribe ¶

func (c *Client) Subscribe(channels ...string) (*PubSub, error)

Subscribe subscribes the client to the specified channels.

func (*Client) Sync ¶

func (c *Client) Sync()

func (*Client) TTL ¶

func (c *Client) TTL(key string) *DurationCmd

func (*Client) Time ¶

func (c *Client) Time() *StringSliceCmd

TODO: add TimeCmd and use it here

func (*Client) Type ¶

func (c *Client) Type(key string) *StatusCmd

func (*Client) Watch ¶

func (c *Client) Watch(fn func(*Tx) error, keys ...string) error
Example ¶
var incr func(string) error

// Transactionally increments key using GET and SET commands.
incr = func(key string) error {
	err := client.Watch(func(tx *redis.Tx) error {
		n, err := tx.Get(key).Int64()
		if err != nil && err != redis.Nil {
			return err
		}

		_, err = tx.MultiExec(func() error {
			tx.Set(key, strconv.FormatInt(n+1, 10), 0)
			return nil
		})
		return err
	}, key)
	if err == redis.TxFailedErr {
		return incr(key)
	}
	return err
}

var wg sync.WaitGroup
for i := 0; i < 100; i++ {
	wg.Add(1)
	go func() {
		defer wg.Done()

		err := incr("counter3")
		if err != nil {
			panic(err)
		}
	}()
}
wg.Wait()

n, err := client.Get("counter3").Int64()
fmt.Println(n, err)
Output:

100 <nil>

func (*Client) WrapProcess ¶

func (c *Client) WrapProcess(createWrapper func(oldProcess func(cmd Cmder) error) func(cmd Cmder) error)

WrapProcess replaces the process func. It takes a function createWrapper which is supplied by the user. createWrapper takes the old process func as an input and returns the new wrapper process func. createWrapper should use call the old process func within the new process func.

func (*Client) ZAdd ¶

func (c *Client) ZAdd(key string, members ...Z) *IntCmd

Redis `ZADD key score member [score member ...]` command.

func (*Client) ZAddCh ¶

func (c *Client) ZAddCh(key string, members ...Z) *IntCmd

Redis `ZADD key CH score member [score member ...]` command.

func (*Client) ZAddNX ¶

func (c *Client) ZAddNX(key string, members ...Z) *IntCmd

Redis `ZADD key NX score member [score member ...]` command.

func (*Client) ZAddNXCh ¶

func (c *Client) ZAddNXCh(key string, members ...Z) *IntCmd

Redis `ZADD key NX CH score member [score member ...]` command.

func (*Client) ZAddXX ¶

func (c *Client) ZAddXX(key string, members ...Z) *IntCmd

Redis `ZADD key XX score member [score member ...]` command.

func (*Client) ZAddXXCh ¶

func (c *Client) ZAddXXCh(key string, members ...Z) *IntCmd

Redis `ZADD key XX CH score member [score member ...]` command.

func (*Client) ZCard ¶

func (c *Client) ZCard(key string) *IntCmd

func (*Client) ZCount ¶

func (c *Client) ZCount(key, min, max string) *IntCmd

func (*Client) ZIncr ¶

func (c *Client) ZIncr(key string, member Z) *FloatCmd

Redis `ZADD key INCR score member` command.

func (*Client) ZIncrBy ¶

func (c *Client) ZIncrBy(key string, increment float64, member string) *FloatCmd

func (*Client) ZIncrNX ¶

func (c *Client) ZIncrNX(key string, member Z) *FloatCmd

Redis `ZADD key NX INCR score member` command.

func (*Client) ZIncrXX ¶

func (c *Client) ZIncrXX(key string, member Z) *FloatCmd

Redis `ZADD key XX INCR score member` command.

func (*Client) ZInterStore ¶

func (c *Client) ZInterStore(destination string, store ZStore, keys ...string) *IntCmd

func (*Client) ZRange ¶

func (c *Client) ZRange(key string, start, stop int64) *StringSliceCmd

func (*Client) ZRangeByLex ¶

func (c *Client) ZRangeByLex(key string, opt ZRangeBy) *StringSliceCmd

func (*Client) ZRangeByScore ¶

func (c *Client) ZRangeByScore(key string, opt ZRangeBy) *StringSliceCmd

func (*Client) ZRangeByScoreWithScores ¶

func (c *Client) ZRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd

func (*Client) ZRangeWithScores ¶

func (c *Client) ZRangeWithScores(key string, start, stop int64) *ZSliceCmd

func (*Client) ZRank ¶

func (c *Client) ZRank(key, member string) *IntCmd

func (*Client) ZRem ¶

func (c *Client) ZRem(key string, members ...interface{}) *IntCmd

func (*Client) ZRemRangeByRank ¶

func (c *Client) ZRemRangeByRank(key string, start, stop int64) *IntCmd

func (*Client) ZRemRangeByScore ¶

func (c *Client) ZRemRangeByScore(key, min, max string) *IntCmd

func (*Client) ZRevRange ¶

func (c *Client) ZRevRange(key string, start, stop int64) *StringSliceCmd

func (*Client) ZRevRangeByLex ¶

func (c *Client) ZRevRangeByLex(key string, opt ZRangeBy) *StringSliceCmd

func (*Client) ZRevRangeByScore ¶

func (c *Client) ZRevRangeByScore(key string, opt ZRangeBy) *StringSliceCmd

func (*Client) ZRevRangeByScoreWithScores ¶

func (c *Client) ZRevRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd

func (*Client) ZRevRangeWithScores ¶

func (c *Client) ZRevRangeWithScores(key string, start, stop int64) *ZSliceCmd

func (*Client) ZRevRank ¶

func (c *Client) ZRevRank(key, member string) *IntCmd

func (*Client) ZScan ¶

func (c *Client) ZScan(key string, cursor uint64, match string, count int64) Scanner

func (*Client) ZScore ¶

func (c *Client) ZScore(key, member string) *FloatCmd

func (*Client) ZUnionStore ¶

func (c *Client) ZUnionStore(dest string, store ZStore, keys ...string) *IntCmd

type ClusterClient ¶

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

ClusterClient is a Redis Cluster client representing a pool of zero or more underlying connections. It's safe for concurrent use by multiple goroutines.

func NewClusterClient ¶

func NewClusterClient(opt *ClusterOptions) *ClusterClient

NewClusterClient returns a Redis Cluster client as described in http://redis.io/topics/cluster-spec.

Example ¶
// See http://redis.io/topics/cluster-tutorial for instructions
// how to setup Redis Cluster.
client := redis.NewClusterClient(&redis.ClusterOptions{
	Addrs: []string{":7000", ":7001", ":7002", ":7003", ":7004", ":7005"},
})
client.Ping()
Output:

func (*ClusterClient) Append ¶

func (c *ClusterClient) Append(key, value string) *IntCmd

func (*ClusterClient) BLPop ¶

func (c *ClusterClient) BLPop(timeout time.Duration, keys ...string) *StringSliceCmd

func (*ClusterClient) BRPop ¶

func (c *ClusterClient) BRPop(timeout time.Duration, keys ...string) *StringSliceCmd

func (*ClusterClient) BRPopLPush ¶

func (c *ClusterClient) BRPopLPush(source, destination string, timeout time.Duration) *StringCmd

func (*ClusterClient) BgRewriteAOF ¶

func (c *ClusterClient) BgRewriteAOF() *StatusCmd

func (*ClusterClient) BgSave ¶

func (c *ClusterClient) BgSave() *StatusCmd

func (*ClusterClient) BitCount ¶

func (c *ClusterClient) BitCount(key string, bitCount *BitCount) *IntCmd

func (*ClusterClient) BitOpAnd ¶

func (c *ClusterClient) BitOpAnd(destKey string, keys ...string) *IntCmd

func (*ClusterClient) BitOpNot ¶

func (c *ClusterClient) BitOpNot(destKey string, key string) *IntCmd

func (*ClusterClient) BitOpOr ¶

func (c *ClusterClient) BitOpOr(destKey string, keys ...string) *IntCmd

func (*ClusterClient) BitOpXor ¶

func (c *ClusterClient) BitOpXor(destKey string, keys ...string) *IntCmd

func (*ClusterClient) BitPos ¶

func (c *ClusterClient) BitPos(key string, bit int64, pos ...int64) *IntCmd

func (*ClusterClient) ClientKill ¶

func (c *ClusterClient) ClientKill(ipPort string) *StatusCmd

func (*ClusterClient) ClientList ¶

func (c *ClusterClient) ClientList() *StringCmd

func (*ClusterClient) ClientPause ¶

func (c *ClusterClient) ClientPause(dur time.Duration) *BoolCmd

func (*ClusterClient) ClientSetName ¶

func (c *ClusterClient) ClientSetName(name string) *BoolCmd

ClientSetName assigns a name to the one of many connections in the pool.

func (*ClusterClient) Close ¶

func (c *ClusterClient) Close() error

Close closes the cluster client, releasing any open resources.

It is rare to Close a ClusterClient, as the ClusterClient is meant to be long-lived and shared between many goroutines.

func (*ClusterClient) ClusterAddSlots ¶

func (c *ClusterClient) ClusterAddSlots(slots ...int) *StatusCmd

func (*ClusterClient) ClusterAddSlotsRange ¶

func (c *ClusterClient) ClusterAddSlotsRange(min, max int) *StatusCmd

func (*ClusterClient) ClusterCountFailureReports ¶

func (c *ClusterClient) ClusterCountFailureReports(nodeID string) *IntCmd

func (*ClusterClient) ClusterCountKeysInSlot ¶

func (c *ClusterClient) ClusterCountKeysInSlot(slot int) *IntCmd

func (*ClusterClient) ClusterDelSlots ¶

func (c *ClusterClient) ClusterDelSlots(slots ...int) *StatusCmd

func (*ClusterClient) ClusterDelSlotsRange ¶

func (c *ClusterClient) ClusterDelSlotsRange(min, max int) *StatusCmd

func (*ClusterClient) ClusterFailover ¶

func (c *ClusterClient) ClusterFailover() *StatusCmd

func (*ClusterClient) ClusterForget ¶

func (c *ClusterClient) ClusterForget(nodeID string) *StatusCmd

func (*ClusterClient) ClusterInfo ¶

func (c *ClusterClient) ClusterInfo() *StringCmd

func (*ClusterClient) ClusterKeySlot ¶

func (c *ClusterClient) ClusterKeySlot(key string) *IntCmd

func (*ClusterClient) ClusterMeet ¶

func (c *ClusterClient) ClusterMeet(host, port string) *StatusCmd

func (*ClusterClient) ClusterNodes ¶

func (c *ClusterClient) ClusterNodes() *StringCmd

func (*ClusterClient) ClusterReplicate ¶

func (c *ClusterClient) ClusterReplicate(nodeID string) *StatusCmd

func (*ClusterClient) ClusterResetHard ¶

func (c *ClusterClient) ClusterResetHard() *StatusCmd

func (*ClusterClient) ClusterResetSoft ¶

func (c *ClusterClient) ClusterResetSoft() *StatusCmd

func (*ClusterClient) ClusterSaveConfig ¶

func (c *ClusterClient) ClusterSaveConfig() *StatusCmd

func (*ClusterClient) ClusterSlaves ¶

func (c *ClusterClient) ClusterSlaves(nodeID string) *StringSliceCmd

func (*ClusterClient) ClusterSlots ¶

func (c *ClusterClient) ClusterSlots() *ClusterSlotsCmd

func (*ClusterClient) Command ¶

func (c *ClusterClient) Command() *CommandsInfoCmd

func (*ClusterClient) ConfigGet ¶

func (c *ClusterClient) ConfigGet(parameter string) *SliceCmd

func (*ClusterClient) ConfigResetStat ¶

func (c *ClusterClient) ConfigResetStat() *StatusCmd

func (*ClusterClient) ConfigSet ¶

func (c *ClusterClient) ConfigSet(parameter, value string) *StatusCmd

func (*ClusterClient) DbSize ¶

func (c *ClusterClient) DbSize() *IntCmd

func (*ClusterClient) DebugObject ¶

func (c *ClusterClient) DebugObject(key string) *StringCmd

func (*ClusterClient) Decr ¶

func (c *ClusterClient) Decr(key string) *IntCmd

func (*ClusterClient) DecrBy ¶

func (c *ClusterClient) DecrBy(key string, decrement int64) *IntCmd

func (*ClusterClient) Del ¶

func (c *ClusterClient) Del(keys ...string) *IntCmd

func (*ClusterClient) Dump ¶

func (c *ClusterClient) Dump(key string) *StringCmd

func (*ClusterClient) Echo ¶

func (c *ClusterClient) Echo(message interface{}) *StringCmd

func (*ClusterClient) Eval ¶

func (c *ClusterClient) Eval(script string, keys []string, args ...interface{}) *Cmd

func (*ClusterClient) EvalSha ¶

func (c *ClusterClient) EvalSha(sha1 string, keys []string, args ...interface{}) *Cmd

func (*ClusterClient) Exists ¶

func (c *ClusterClient) Exists(key string) *BoolCmd

func (*ClusterClient) Expire ¶

func (c *ClusterClient) Expire(key string, expiration time.Duration) *BoolCmd

func (*ClusterClient) ExpireAt ¶

func (c *ClusterClient) ExpireAt(key string, tm time.Time) *BoolCmd

func (*ClusterClient) FlushAll ¶

func (c *ClusterClient) FlushAll() *StatusCmd

func (*ClusterClient) FlushDb ¶

func (c *ClusterClient) FlushDb() *StatusCmd

func (*ClusterClient) ForEachMaster ¶

func (c *ClusterClient) ForEachMaster(fn func(client *Client) error) error

ForEachMaster concurrently calls the fn on each master node in the cluster. It returns the first error if any.

func (*ClusterClient) GeoAdd ¶

func (c *ClusterClient) GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd

func (*ClusterClient) GeoDist ¶

func (c *ClusterClient) GeoDist(key string, member1, member2, unit string) *FloatCmd

func (*ClusterClient) GeoHash ¶

func (c *ClusterClient) GeoHash(key string, members ...string) *StringSliceCmd

func (*ClusterClient) GeoPos ¶

func (c *ClusterClient) GeoPos(key string, members ...string) *GeoPosCmd

func (*ClusterClient) GeoRadius ¶

func (c *ClusterClient) GeoRadius(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd

func (*ClusterClient) GeoRadiusByMember ¶

func (c *ClusterClient) GeoRadiusByMember(key, member string, query *GeoRadiusQuery) *GeoLocationCmd

func (*ClusterClient) Get ¶

func (c *ClusterClient) Get(key string) *StringCmd

func (*ClusterClient) GetBit ¶

func (c *ClusterClient) GetBit(key string, offset int64) *IntCmd

func (*ClusterClient) GetRange ¶

func (c *ClusterClient) GetRange(key string, start, end int64) *StringCmd

func (*ClusterClient) GetSet ¶

func (c *ClusterClient) GetSet(key string, value interface{}) *StringCmd

func (*ClusterClient) HDel ¶

func (c *ClusterClient) HDel(key string, fields ...string) *IntCmd

func (*ClusterClient) HExists ¶

func (c *ClusterClient) HExists(key, field string) *BoolCmd

func (*ClusterClient) HGet ¶

func (c *ClusterClient) HGet(key, field string) *StringCmd

func (*ClusterClient) HGetAll ¶

func (c *ClusterClient) HGetAll(key string) *StringStringMapCmd

func (*ClusterClient) HIncrBy ¶

func (c *ClusterClient) HIncrBy(key, field string, incr int64) *IntCmd

func (*ClusterClient) HIncrByFloat ¶

func (c *ClusterClient) HIncrByFloat(key, field string, incr float64) *FloatCmd

func (*ClusterClient) HKeys ¶

func (c *ClusterClient) HKeys(key string) *StringSliceCmd

func (*ClusterClient) HLen ¶

func (c *ClusterClient) HLen(key string) *IntCmd

func (*ClusterClient) HMGet ¶

func (c *ClusterClient) HMGet(key string, fields ...string) *SliceCmd

func (*ClusterClient) HMSet ¶

func (c *ClusterClient) HMSet(key string, fields map[string]string) *StatusCmd

func (*ClusterClient) HScan ¶

func (c *ClusterClient) HScan(key string, cursor uint64, match string, count int64) Scanner

func (*ClusterClient) HSet ¶

func (c *ClusterClient) HSet(key, field, value string) *BoolCmd

func (*ClusterClient) HSetNX ¶

func (c *ClusterClient) HSetNX(key, field, value string) *BoolCmd

func (*ClusterClient) HVals ¶

func (c *ClusterClient) HVals(key string) *StringSliceCmd

func (*ClusterClient) Incr ¶

func (c *ClusterClient) Incr(key string) *IntCmd

func (*ClusterClient) IncrBy ¶

func (c *ClusterClient) IncrBy(key string, value int64) *IntCmd

func (*ClusterClient) IncrByFloat ¶

func (c *ClusterClient) IncrByFloat(key string, value float64) *FloatCmd

func (*ClusterClient) Info ¶

func (c *ClusterClient) Info(section ...string) *StringCmd

func (*ClusterClient) Keys ¶

func (c *ClusterClient) Keys(pattern string) *StringSliceCmd

func (*ClusterClient) LIndex ¶

func (c *ClusterClient) LIndex(key string, index int64) *StringCmd

func (*ClusterClient) LInsert ¶

func (c *ClusterClient) LInsert(key, op string, pivot, value interface{}) *IntCmd

func (*ClusterClient) LInsertAfter ¶

func (c *ClusterClient) LInsertAfter(key string, pivot, value interface{}) *IntCmd

func (*ClusterClient) LInsertBefore ¶

func (c *ClusterClient) LInsertBefore(key string, pivot, value interface{}) *IntCmd

func (*ClusterClient) LLen ¶

func (c *ClusterClient) LLen(key string) *IntCmd

func (*ClusterClient) LPop ¶

func (c *ClusterClient) LPop(key string) *StringCmd

func (*ClusterClient) LPush ¶

func (c *ClusterClient) LPush(key string, values ...interface{}) *IntCmd

func (*ClusterClient) LPushX ¶

func (c *ClusterClient) LPushX(key string, value interface{}) *IntCmd

func (*ClusterClient) LRange ¶

func (c *ClusterClient) LRange(key string, start, stop int64) *StringSliceCmd

func (*ClusterClient) LRem ¶

func (c *ClusterClient) LRem(key string, count int64, value interface{}) *IntCmd

func (*ClusterClient) LSet ¶

func (c *ClusterClient) LSet(key string, index int64, value interface{}) *StatusCmd

func (*ClusterClient) LTrim ¶

func (c *ClusterClient) LTrim(key string, start, stop int64) *StatusCmd

func (*ClusterClient) LastSave ¶

func (c *ClusterClient) LastSave() *IntCmd

func (*ClusterClient) MGet ¶

func (c *ClusterClient) MGet(keys ...string) *SliceCmd

func (*ClusterClient) MSet ¶

func (c *ClusterClient) MSet(pairs ...interface{}) *StatusCmd

func (*ClusterClient) MSetNX ¶

func (c *ClusterClient) MSetNX(pairs ...interface{}) *BoolCmd

func (*ClusterClient) Migrate ¶

func (c *ClusterClient) Migrate(host, port, key string, db int64, timeout time.Duration) *StatusCmd

func (*ClusterClient) Move ¶

func (c *ClusterClient) Move(key string, db int64) *BoolCmd

func (*ClusterClient) ObjectEncoding ¶

func (c *ClusterClient) ObjectEncoding(keys ...string) *StringCmd

func (*ClusterClient) ObjectIdleTime ¶

func (c *ClusterClient) ObjectIdleTime(keys ...string) *DurationCmd

func (*ClusterClient) ObjectRefCount ¶

func (c *ClusterClient) ObjectRefCount(keys ...string) *IntCmd

func (*ClusterClient) PExpire ¶

func (c *ClusterClient) PExpire(key string, expiration time.Duration) *BoolCmd

func (*ClusterClient) PExpireAt ¶

func (c *ClusterClient) PExpireAt(key string, tm time.Time) *BoolCmd

func (*ClusterClient) PFAdd ¶

func (c *ClusterClient) PFAdd(key string, els ...interface{}) *IntCmd

func (*ClusterClient) PFCount ¶

func (c *ClusterClient) PFCount(keys ...string) *IntCmd

func (*ClusterClient) PFMerge ¶

func (c *ClusterClient) PFMerge(dest string, keys ...string) *StatusCmd

func (*ClusterClient) PTTL ¶

func (c *ClusterClient) PTTL(key string) *DurationCmd

func (*ClusterClient) Persist ¶

func (c *ClusterClient) Persist(key string) *BoolCmd

func (*ClusterClient) Ping ¶

func (c *ClusterClient) Ping() *StatusCmd

func (*ClusterClient) Pipeline ¶

func (c *ClusterClient) Pipeline() *Pipeline

func (*ClusterClient) Pipelined ¶

func (c *ClusterClient) Pipelined(fn func(*Pipeline) error) ([]Cmder, error)

func (*ClusterClient) PoolStats ¶

func (c *ClusterClient) PoolStats() *PoolStats

PoolStats returns accumulated connection pool stats.

func (*ClusterClient) Process ¶

func (c *ClusterClient) Process(cmd Cmder) error

func (*ClusterClient) PubSubChannels ¶

func (c *ClusterClient) PubSubChannels(pattern string) *StringSliceCmd

func (*ClusterClient) PubSubNumPat ¶

func (c *ClusterClient) PubSubNumPat() *IntCmd

func (*ClusterClient) PubSubNumSub ¶

func (c *ClusterClient) PubSubNumSub(channels ...string) *StringIntMapCmd

func (*ClusterClient) Publish ¶

func (c *ClusterClient) Publish(channel, message string) *IntCmd

Publish posts the message to the channel.

func (*ClusterClient) Quit ¶

func (c *ClusterClient) Quit() *StatusCmd

func (*ClusterClient) RPop ¶

func (c *ClusterClient) RPop(key string) *StringCmd

func (*ClusterClient) RPopLPush ¶

func (c *ClusterClient) RPopLPush(source, destination string) *StringCmd

func (*ClusterClient) RPush ¶

func (c *ClusterClient) RPush(key string, values ...interface{}) *IntCmd

func (*ClusterClient) RPushX ¶

func (c *ClusterClient) RPushX(key string, value interface{}) *IntCmd

func (*ClusterClient) RandomKey ¶

func (c *ClusterClient) RandomKey() *StringCmd

func (*ClusterClient) Rename ¶

func (c *ClusterClient) Rename(key, newkey string) *StatusCmd

func (*ClusterClient) RenameNX ¶

func (c *ClusterClient) RenameNX(key, newkey string) *BoolCmd

func (*ClusterClient) Restore ¶

func (c *ClusterClient) Restore(key string, ttl time.Duration, value string) *StatusCmd

func (*ClusterClient) RestoreReplace ¶

func (c *ClusterClient) RestoreReplace(key string, ttl time.Duration, value string) *StatusCmd

func (*ClusterClient) SAdd ¶

func (c *ClusterClient) SAdd(key string, members ...interface{}) *IntCmd

func (*ClusterClient) SCard ¶

func (c *ClusterClient) SCard(key string) *IntCmd

func (*ClusterClient) SDiff ¶

func (c *ClusterClient) SDiff(keys ...string) *StringSliceCmd

func (*ClusterClient) SDiffStore ¶

func (c *ClusterClient) SDiffStore(destination string, keys ...string) *IntCmd

func (*ClusterClient) SInter ¶

func (c *ClusterClient) SInter(keys ...string) *StringSliceCmd

func (*ClusterClient) SInterStore ¶

func (c *ClusterClient) SInterStore(destination string, keys ...string) *IntCmd

func (*ClusterClient) SIsMember ¶

func (c *ClusterClient) SIsMember(key string, member interface{}) *BoolCmd

func (*ClusterClient) SMembers ¶

func (c *ClusterClient) SMembers(key string) *StringSliceCmd

func (*ClusterClient) SMove ¶

func (c *ClusterClient) SMove(source, destination string, member interface{}) *BoolCmd

func (*ClusterClient) SPop ¶

func (c *ClusterClient) SPop(key string) *StringCmd

Redis `SPOP key` command.

func (*ClusterClient) SPopN ¶

func (c *ClusterClient) SPopN(key string, count int64) *StringSliceCmd

Redis `SPOP key count` command.

func (*ClusterClient) SRandMember ¶

func (c *ClusterClient) SRandMember(key string) *StringCmd

Redis `SRANDMEMBER key` command.

func (*ClusterClient) SRandMemberN ¶

func (c *ClusterClient) SRandMemberN(key string, count int64) *StringSliceCmd

Redis `SRANDMEMBER key count` command.

func (*ClusterClient) SRem ¶

func (c *ClusterClient) SRem(key string, members ...interface{}) *IntCmd

func (*ClusterClient) SScan ¶

func (c *ClusterClient) SScan(key string, cursor uint64, match string, count int64) Scanner

func (*ClusterClient) SUnion ¶

func (c *ClusterClient) SUnion(keys ...string) *StringSliceCmd

func (*ClusterClient) SUnionStore ¶

func (c *ClusterClient) SUnionStore(destination string, keys ...string) *IntCmd

func (*ClusterClient) Save ¶

func (c *ClusterClient) Save() *StatusCmd

func (*ClusterClient) Scan ¶

func (c *ClusterClient) Scan(cursor uint64, match string, count int64) Scanner

func (*ClusterClient) ScriptExists ¶

func (c *ClusterClient) ScriptExists(scripts ...string) *BoolSliceCmd

func (*ClusterClient) ScriptFlush ¶

func (c *ClusterClient) ScriptFlush() *StatusCmd

func (*ClusterClient) ScriptKill ¶

func (c *ClusterClient) ScriptKill() *StatusCmd

func (*ClusterClient) ScriptLoad ¶

func (c *ClusterClient) ScriptLoad(script string) *StringCmd

func (*ClusterClient) Set ¶

func (c *ClusterClient) Set(key string, value interface{}, expiration time.Duration) *StatusCmd

Redis `SET key value [expiration]` command.

Zero expiration means the key has no expiration time.

func (*ClusterClient) SetBit ¶

func (c *ClusterClient) SetBit(key string, offset int64, value int) *IntCmd

func (*ClusterClient) SetNX ¶

func (c *ClusterClient) SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd

Redis `SET key value [expiration] NX` command.

Zero expiration means the key has no expiration time.

func (*ClusterClient) SetRange ¶

func (c *ClusterClient) SetRange(key string, offset int64, value string) *IntCmd

func (*ClusterClient) SetXX ¶

func (c *ClusterClient) SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd

Redis `SET key value [expiration] XX` command.

Zero expiration means the key has no expiration time.

func (*ClusterClient) Shutdown ¶

func (c *ClusterClient) Shutdown() *StatusCmd

func (*ClusterClient) ShutdownNoSave ¶

func (c *ClusterClient) ShutdownNoSave() *StatusCmd

func (*ClusterClient) ShutdownSave ¶

func (c *ClusterClient) ShutdownSave() *StatusCmd

func (*ClusterClient) SlaveOf ¶

func (c *ClusterClient) SlaveOf(host, port string) *StatusCmd

func (*ClusterClient) SlowLog ¶

func (c *ClusterClient) SlowLog()

func (*ClusterClient) Sort ¶

func (c *ClusterClient) Sort(key string, sort Sort) *StringSliceCmd

func (*ClusterClient) SortInterfaces ¶

func (c *ClusterClient) SortInterfaces(key string, sort Sort) *SliceCmd

func (*ClusterClient) StrLen ¶

func (c *ClusterClient) StrLen(key string) *IntCmd

func (*ClusterClient) Sync ¶

func (c *ClusterClient) Sync()

func (*ClusterClient) TTL ¶

func (c *ClusterClient) TTL(key string) *DurationCmd

func (*ClusterClient) Time ¶

func (c *ClusterClient) Time() *StringSliceCmd

TODO: add TimeCmd and use it here

func (*ClusterClient) Type ¶

func (c *ClusterClient) Type(key string) *StatusCmd

func (*ClusterClient) Watch ¶

func (c *ClusterClient) Watch(fn func(*Tx) error, keys ...string) error

func (*ClusterClient) WrapProcess ¶

func (c *ClusterClient) WrapProcess(createWrapper func(oldProcess func(cmd Cmder) error) func(cmd Cmder) error)

WrapProcess replaces the process func. It takes a function createWrapper which is supplied by the user. createWrapper takes the old process func as an input and returns the new wrapper process func. createWrapper should use call the old process func within the new process func.

func (*ClusterClient) ZAdd ¶

func (c *ClusterClient) ZAdd(key string, members ...Z) *IntCmd

Redis `ZADD key score member [score member ...]` command.

func (*ClusterClient) ZAddCh ¶

func (c *ClusterClient) ZAddCh(key string, members ...Z) *IntCmd

Redis `ZADD key CH score member [score member ...]` command.

func (*ClusterClient) ZAddNX ¶

func (c *ClusterClient) ZAddNX(key string, members ...Z) *IntCmd

Redis `ZADD key NX score member [score member ...]` command.

func (*ClusterClient) ZAddNXCh ¶

func (c *ClusterClient) ZAddNXCh(key string, members ...Z) *IntCmd

Redis `ZADD key NX CH score member [score member ...]` command.

func (*ClusterClient) ZAddXX ¶

func (c *ClusterClient) ZAddXX(key string, members ...Z) *IntCmd

Redis `ZADD key XX score member [score member ...]` command.

func (*ClusterClient) ZAddXXCh ¶

func (c *ClusterClient) ZAddXXCh(key string, members ...Z) *IntCmd

Redis `ZADD key XX CH score member [score member ...]` command.

func (*ClusterClient) ZCard ¶

func (c *ClusterClient) ZCard(key string) *IntCmd

func (*ClusterClient) ZCount ¶

func (c *ClusterClient) ZCount(key, min, max string) *IntCmd

func (*ClusterClient) ZIncr ¶

func (c *ClusterClient) ZIncr(key string, member Z) *FloatCmd

Redis `ZADD key INCR score member` command.

func (*ClusterClient) ZIncrBy ¶

func (c *ClusterClient) ZIncrBy(key string, increment float64, member string) *FloatCmd

func (*ClusterClient) ZIncrNX ¶

func (c *ClusterClient) ZIncrNX(key string, member Z) *FloatCmd

Redis `ZADD key NX INCR score member` command.

func (*ClusterClient) ZIncrXX ¶

func (c *ClusterClient) ZIncrXX(key string, member Z) *FloatCmd

Redis `ZADD key XX INCR score member` command.

func (*ClusterClient) ZInterStore ¶

func (c *ClusterClient) ZInterStore(destination string, store ZStore, keys ...string) *IntCmd

func (*ClusterClient) ZRange ¶

func (c *ClusterClient) ZRange(key string, start, stop int64) *StringSliceCmd

func (*ClusterClient) ZRangeByLex ¶

func (c *ClusterClient) ZRangeByLex(key string, opt ZRangeBy) *StringSliceCmd

func (*ClusterClient) ZRangeByScore ¶

func (c *ClusterClient) ZRangeByScore(key string, opt ZRangeBy) *StringSliceCmd

func (*ClusterClient) ZRangeByScoreWithScores ¶

func (c *ClusterClient) ZRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd

func (*ClusterClient) ZRangeWithScores ¶

func (c *ClusterClient) ZRangeWithScores(key string, start, stop int64) *ZSliceCmd

func (*ClusterClient) ZRank ¶

func (c *ClusterClient) ZRank(key, member string) *IntCmd

func (*ClusterClient) ZRem ¶

func (c *ClusterClient) ZRem(key string, members ...interface{}) *IntCmd

func (*ClusterClient) ZRemRangeByRank ¶

func (c *ClusterClient) ZRemRangeByRank(key string, start, stop int64) *IntCmd

func (*ClusterClient) ZRemRangeByScore ¶

func (c *ClusterClient) ZRemRangeByScore(key, min, max string) *IntCmd

func (*ClusterClient) ZRevRange ¶

func (c *ClusterClient) ZRevRange(key string, start, stop int64) *StringSliceCmd

func (*ClusterClient) ZRevRangeByLex ¶

func (c *ClusterClient) ZRevRangeByLex(key string, opt ZRangeBy) *StringSliceCmd

func (*ClusterClient) ZRevRangeByScore ¶

func (c *ClusterClient) ZRevRangeByScore(key string, opt ZRangeBy) *StringSliceCmd

func (*ClusterClient) ZRevRangeByScoreWithScores ¶

func (c *ClusterClient) ZRevRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd

func (*ClusterClient) ZRevRangeWithScores ¶

func (c *ClusterClient) ZRevRangeWithScores(key string, start, stop int64) *ZSliceCmd

func (*ClusterClient) ZRevRank ¶

func (c *ClusterClient) ZRevRank(key, member string) *IntCmd

func (*ClusterClient) ZScan ¶

func (c *ClusterClient) ZScan(key string, cursor uint64, match string, count int64) Scanner

func (*ClusterClient) ZScore ¶

func (c *ClusterClient) ZScore(key, member string) *FloatCmd

func (*ClusterClient) ZUnionStore ¶

func (c *ClusterClient) ZUnionStore(dest string, store ZStore, keys ...string) *IntCmd

type ClusterNode ¶

type ClusterNode struct {
	Id   string
	Addr string
}

type ClusterOptions ¶

type ClusterOptions struct {
	// A seed list of host:port addresses of cluster nodes.
	Addrs []string

	// The maximum number of retries before giving up. Command is retried
	// on network errors and MOVED/ASK redirects.
	// Default is 16.
	MaxRedirects int

	// Enables read queries for a connection to a Redis Cluster slave node.
	ReadOnly bool

	// Enables routing read-only queries to the closest master or slave node.
	RouteByLatency bool

	Password string

	DialTimeout  time.Duration
	ReadTimeout  time.Duration
	WriteTimeout time.Duration

	// PoolSize applies per cluster node and not for the whole cluster.
	PoolSize           int
	PoolTimeout        time.Duration
	IdleTimeout        time.Duration
	IdleCheckFrequency time.Duration
}

ClusterOptions are used to configure a cluster client and should be passed to NewClusterClient.

type ClusterSlot ¶

type ClusterSlot struct {
	Start int
	End   int
	Nodes []ClusterNode
}

type ClusterSlotsCmd ¶

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

func NewClusterSlotsCmd ¶

func NewClusterSlotsCmd(args ...interface{}) *ClusterSlotsCmd

func NewClusterSlotsCmdResult ¶

func NewClusterSlotsCmdResult(val []ClusterSlot, err error) *ClusterSlotsCmd

NewClusterSlotsCmdResult returns a ClusterSlotsCmd initalised with val and err for testing

func (*ClusterSlotsCmd) Err ¶

func (cmd *ClusterSlotsCmd) Err() error

func (*ClusterSlotsCmd) Result ¶

func (cmd *ClusterSlotsCmd) Result() ([]ClusterSlot, error)

func (*ClusterSlotsCmd) String ¶

func (cmd *ClusterSlotsCmd) String() string

func (*ClusterSlotsCmd) Val ¶

func (cmd *ClusterSlotsCmd) Val() []ClusterSlot

type Cmd ¶

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

func NewCmd ¶

func NewCmd(args ...interface{}) *Cmd

func NewCmdResult ¶

func NewCmdResult(val interface{}, err error) *Cmd

NewCmdResult returns a Cmd initalised with val and err for testing

func (*Cmd) Err ¶

func (cmd *Cmd) Err() error

func (*Cmd) Result ¶

func (cmd *Cmd) Result() (interface{}, error)

func (*Cmd) String ¶

func (cmd *Cmd) String() string

func (*Cmd) Val ¶

func (cmd *Cmd) Val() interface{}

type Cmdable ¶

type Cmdable interface {
	Pipeline() *Pipeline
	Pipelined(fn func(*Pipeline) error) ([]Cmder, error)

	Echo(message interface{}) *StringCmd
	Ping() *StatusCmd
	Quit() *StatusCmd
	Del(keys ...string) *IntCmd
	Dump(key string) *StringCmd
	Exists(key string) *BoolCmd
	Expire(key string, expiration time.Duration) *BoolCmd
	ExpireAt(key string, tm time.Time) *BoolCmd
	Keys(pattern string) *StringSliceCmd
	Migrate(host, port, key string, db int64, timeout time.Duration) *StatusCmd
	Move(key string, db int64) *BoolCmd
	ObjectRefCount(keys ...string) *IntCmd
	ObjectEncoding(keys ...string) *StringCmd
	ObjectIdleTime(keys ...string) *DurationCmd
	Persist(key string) *BoolCmd
	PExpire(key string, expiration time.Duration) *BoolCmd
	PExpireAt(key string, tm time.Time) *BoolCmd
	PTTL(key string) *DurationCmd
	RandomKey() *StringCmd
	Rename(key, newkey string) *StatusCmd
	RenameNX(key, newkey string) *BoolCmd
	Restore(key string, ttl time.Duration, value string) *StatusCmd
	RestoreReplace(key string, ttl time.Duration, value string) *StatusCmd
	Sort(key string, sort Sort) *StringSliceCmd
	SortInterfaces(key string, sort Sort) *SliceCmd
	TTL(key string) *DurationCmd
	Type(key string) *StatusCmd
	Scan(cursor uint64, match string, count int64) Scanner
	SScan(key string, cursor uint64, match string, count int64) Scanner
	HScan(key string, cursor uint64, match string, count int64) Scanner
	ZScan(key string, cursor uint64, match string, count int64) Scanner
	Append(key, value string) *IntCmd
	BitCount(key string, bitCount *BitCount) *IntCmd
	BitOpAnd(destKey string, keys ...string) *IntCmd
	BitOpOr(destKey string, keys ...string) *IntCmd
	BitOpXor(destKey string, keys ...string) *IntCmd
	BitOpNot(destKey string, key string) *IntCmd
	BitPos(key string, bit int64, pos ...int64) *IntCmd
	Decr(key string) *IntCmd
	DecrBy(key string, decrement int64) *IntCmd
	Get(key string) *StringCmd
	GetBit(key string, offset int64) *IntCmd
	GetRange(key string, start, end int64) *StringCmd
	GetSet(key string, value interface{}) *StringCmd
	Incr(key string) *IntCmd
	IncrBy(key string, value int64) *IntCmd
	IncrByFloat(key string, value float64) *FloatCmd
	MGet(keys ...string) *SliceCmd
	MSet(pairs ...interface{}) *StatusCmd
	MSetNX(pairs ...interface{}) *BoolCmd
	Set(key string, value interface{}, expiration time.Duration) *StatusCmd
	SetBit(key string, offset int64, value int) *IntCmd
	SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd
	SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd
	SetRange(key string, offset int64, value string) *IntCmd
	StrLen(key string) *IntCmd
	HDel(key string, fields ...string) *IntCmd
	HExists(key, field string) *BoolCmd
	HGet(key, field string) *StringCmd
	HGetAll(key string) *StringStringMapCmd
	HIncrBy(key, field string, incr int64) *IntCmd
	HIncrByFloat(key, field string, incr float64) *FloatCmd
	HKeys(key string) *StringSliceCmd
	HLen(key string) *IntCmd
	HMGet(key string, fields ...string) *SliceCmd
	HMSet(key string, fields map[string]string) *StatusCmd
	HSet(key, field, value string) *BoolCmd
	HSetNX(key, field, value string) *BoolCmd
	HVals(key string) *StringSliceCmd
	BLPop(timeout time.Duration, keys ...string) *StringSliceCmd
	BRPop(timeout time.Duration, keys ...string) *StringSliceCmd
	BRPopLPush(source, destination string, timeout time.Duration) *StringCmd
	LIndex(key string, index int64) *StringCmd
	LInsert(key, op string, pivot, value interface{}) *IntCmd
	LInsertBefore(key string, pivot, value interface{}) *IntCmd
	LInsertAfter(key string, pivot, value interface{}) *IntCmd
	LLen(key string) *IntCmd
	LPop(key string) *StringCmd
	LPush(key string, values ...interface{}) *IntCmd
	LPushX(key string, value interface{}) *IntCmd
	LRange(key string, start, stop int64) *StringSliceCmd
	LRem(key string, count int64, value interface{}) *IntCmd
	LSet(key string, index int64, value interface{}) *StatusCmd
	LTrim(key string, start, stop int64) *StatusCmd
	RPop(key string) *StringCmd
	RPopLPush(source, destination string) *StringCmd
	RPush(key string, values ...interface{}) *IntCmd
	RPushX(key string, value interface{}) *IntCmd
	SAdd(key string, members ...interface{}) *IntCmd
	SCard(key string) *IntCmd
	SDiff(keys ...string) *StringSliceCmd
	SDiffStore(destination string, keys ...string) *IntCmd
	SInter(keys ...string) *StringSliceCmd
	SInterStore(destination string, keys ...string) *IntCmd
	SIsMember(key string, member interface{}) *BoolCmd
	SMembers(key string) *StringSliceCmd
	SMove(source, destination string, member interface{}) *BoolCmd
	SPop(key string) *StringCmd
	SPopN(key string, count int64) *StringSliceCmd
	SRandMember(key string) *StringCmd
	SRandMemberN(key string, count int64) *StringSliceCmd
	SRem(key string, members ...interface{}) *IntCmd
	SUnion(keys ...string) *StringSliceCmd
	SUnionStore(destination string, keys ...string) *IntCmd
	ZAdd(key string, members ...Z) *IntCmd
	ZAddNX(key string, members ...Z) *IntCmd
	ZAddXX(key string, members ...Z) *IntCmd
	ZAddCh(key string, members ...Z) *IntCmd
	ZAddNXCh(key string, members ...Z) *IntCmd
	ZAddXXCh(key string, members ...Z) *IntCmd
	ZIncr(key string, member Z) *FloatCmd
	ZIncrNX(key string, member Z) *FloatCmd
	ZIncrXX(key string, member Z) *FloatCmd
	ZCard(key string) *IntCmd
	ZCount(key, min, max string) *IntCmd
	ZIncrBy(key string, increment float64, member string) *FloatCmd
	ZInterStore(destination string, store ZStore, keys ...string) *IntCmd
	ZRange(key string, start, stop int64) *StringSliceCmd
	ZRangeWithScores(key string, start, stop int64) *ZSliceCmd
	ZRangeByScore(key string, opt ZRangeBy) *StringSliceCmd
	ZRangeByLex(key string, opt ZRangeBy) *StringSliceCmd
	ZRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd
	ZRank(key, member string) *IntCmd
	ZRem(key string, members ...interface{}) *IntCmd
	ZRemRangeByRank(key string, start, stop int64) *IntCmd
	ZRemRangeByScore(key, min, max string) *IntCmd
	ZRevRange(key string, start, stop int64) *StringSliceCmd
	ZRevRangeWithScores(key string, start, stop int64) *ZSliceCmd
	ZRevRangeByScore(key string, opt ZRangeBy) *StringSliceCmd
	ZRevRangeByLex(key string, opt ZRangeBy) *StringSliceCmd
	ZRevRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd
	ZRevRank(key, member string) *IntCmd
	ZScore(key, member string) *FloatCmd
	ZUnionStore(dest string, store ZStore, keys ...string) *IntCmd
	PFAdd(key string, els ...interface{}) *IntCmd
	PFCount(keys ...string) *IntCmd
	PFMerge(dest string, keys ...string) *StatusCmd
	BgRewriteAOF() *StatusCmd
	BgSave() *StatusCmd
	ClientKill(ipPort string) *StatusCmd
	ClientList() *StringCmd
	ClientPause(dur time.Duration) *BoolCmd
	ClientSetName(name string) *BoolCmd
	ConfigGet(parameter string) *SliceCmd
	ConfigResetStat() *StatusCmd
	ConfigSet(parameter, value string) *StatusCmd
	DbSize() *IntCmd
	FlushAll() *StatusCmd
	FlushDb() *StatusCmd
	Info(section ...string) *StringCmd
	LastSave() *IntCmd
	Save() *StatusCmd
	Shutdown() *StatusCmd
	ShutdownSave() *StatusCmd
	ShutdownNoSave() *StatusCmd
	SlaveOf(host, port string) *StatusCmd
	Time() *StringSliceCmd
	Eval(script string, keys []string, args ...interface{}) *Cmd
	EvalSha(sha1 string, keys []string, args ...interface{}) *Cmd
	ScriptExists(scripts ...string) *BoolSliceCmd
	ScriptFlush() *StatusCmd
	ScriptKill() *StatusCmd
	ScriptLoad(script string) *StringCmd
	DebugObject(key string) *StringCmd
	PubSubChannels(pattern string) *StringSliceCmd
	PubSubNumSub(channels ...string) *StringIntMapCmd
	PubSubNumPat() *IntCmd
	ClusterSlots() *ClusterSlotsCmd
	ClusterNodes() *StringCmd
	ClusterMeet(host, port string) *StatusCmd
	ClusterForget(nodeID string) *StatusCmd
	ClusterReplicate(nodeID string) *StatusCmd
	ClusterResetSoft() *StatusCmd
	ClusterResetHard() *StatusCmd
	ClusterInfo() *StringCmd
	ClusterKeySlot(key string) *IntCmd
	ClusterCountFailureReports(nodeID string) *IntCmd
	ClusterCountKeysInSlot(slot int) *IntCmd
	ClusterDelSlots(slots ...int) *StatusCmd
	ClusterDelSlotsRange(min, max int) *StatusCmd
	ClusterSaveConfig() *StatusCmd
	ClusterSlaves(nodeID string) *StringSliceCmd
	ClusterFailover() *StatusCmd
	ClusterAddSlots(slots ...int) *StatusCmd
	ClusterAddSlotsRange(min, max int) *StatusCmd
	GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd
	GeoPos(key string, members ...string) *GeoPosCmd
	GeoRadius(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd
	GeoRadiusByMember(key, member string, query *GeoRadiusQuery) *GeoLocationCmd
	GeoDist(key string, member1, member2, unit string) *FloatCmd
	GeoHash(key string, members ...string) *StringSliceCmd
	Command() *CommandsInfoCmd
}

type Cmder ¶

type Cmder interface {
	Err() error
	fmt.Stringer
	// contains filtered or unexported methods
}

type CommandInfo ¶

type CommandInfo struct {
	Name        string
	Arity       int8
	Flags       []string
	FirstKeyPos int8
	LastKeyPos  int8
	StepCount   int8
	ReadOnly    bool
}

type CommandsInfoCmd ¶

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

func NewCommandsInfoCmd ¶

func NewCommandsInfoCmd(args ...interface{}) *CommandsInfoCmd

func NewCommandsInfoCmdResult ¶

func NewCommandsInfoCmdResult(val map[string]*CommandInfo, err error) *CommandsInfoCmd

NewCommandsInfoCmdResult returns a CommandsInfoCmd initalised with val and err for testing

func (*CommandsInfoCmd) Err ¶

func (cmd *CommandsInfoCmd) Err() error

func (*CommandsInfoCmd) Result ¶

func (cmd *CommandsInfoCmd) Result() (map[string]*CommandInfo, error)

func (*CommandsInfoCmd) String ¶

func (cmd *CommandsInfoCmd) String() string

func (*CommandsInfoCmd) Val ¶

func (cmd *CommandsInfoCmd) Val() map[string]*CommandInfo

type DurationCmd ¶

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

func NewDurationCmd ¶

func NewDurationCmd(precision time.Duration, args ...interface{}) *DurationCmd

func NewDurationResult ¶

func NewDurationResult(val time.Duration, err error) *DurationCmd

NewDurationResult returns a DurationCmd initalised with val and err for testing

func (*DurationCmd) Err ¶

func (cmd *DurationCmd) Err() error

func (*DurationCmd) Result ¶

func (cmd *DurationCmd) Result() (time.Duration, error)

func (*DurationCmd) String ¶

func (cmd *DurationCmd) String() string

func (*DurationCmd) Val ¶

func (cmd *DurationCmd) Val() time.Duration

type FailoverOptions ¶

type FailoverOptions struct {
	// The master name.
	MasterName string
	// A seed list of host:port addresses of sentinel nodes.
	SentinelAddrs []string

	Password string
	DB       int

	MaxRetries int

	DialTimeout  time.Duration
	ReadTimeout  time.Duration
	WriteTimeout time.Duration

	PoolSize           int
	PoolTimeout        time.Duration
	IdleTimeout        time.Duration
	IdleCheckFrequency time.Duration
}

FailoverOptions are used to configure a failover client and should be passed to NewFailoverClient.

type FloatCmd ¶

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

func NewFloatCmd ¶

func NewFloatCmd(args ...interface{}) *FloatCmd

func NewFloatResult ¶

func NewFloatResult(val float64, err error) *FloatCmd

NewFloatResult returns a FloatCmd initalised with val and err for testing

func (*FloatCmd) Err ¶

func (cmd *FloatCmd) Err() error

func (*FloatCmd) Result ¶

func (cmd *FloatCmd) Result() (float64, error)

func (*FloatCmd) String ¶

func (cmd *FloatCmd) String() string

func (*FloatCmd) Val ¶

func (cmd *FloatCmd) Val() float64

type GeoLocation ¶

type GeoLocation struct {
	Name                      string
	Longitude, Latitude, Dist float64
	GeoHash                   int64
}

GeoLocation is used with GeoAdd to add geospatial location.

type GeoLocationCmd ¶

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

func NewGeoLocationCmd ¶

func NewGeoLocationCmd(q *GeoRadiusQuery, args ...interface{}) *GeoLocationCmd

func NewGeoLocationCmdResult ¶

func NewGeoLocationCmdResult(val []GeoLocation, err error) *GeoLocationCmd

NewGeoLocationCmdResult returns a GeoLocationCmd initalised with val and err for testing

func (*GeoLocationCmd) Err ¶

func (cmd *GeoLocationCmd) Err() error

func (*GeoLocationCmd) Result ¶

func (cmd *GeoLocationCmd) Result() ([]GeoLocation, error)

func (*GeoLocationCmd) String ¶

func (cmd *GeoLocationCmd) String() string

func (*GeoLocationCmd) Val ¶

func (cmd *GeoLocationCmd) Val() []GeoLocation

type GeoPos ¶

type GeoPos struct {
	Longitude, Latitude float64
}

type GeoPosCmd ¶

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

func NewGeoPosCmd ¶

func NewGeoPosCmd(args ...interface{}) *GeoPosCmd

func (*GeoPosCmd) Err ¶

func (cmd *GeoPosCmd) Err() error

func (*GeoPosCmd) Result ¶

func (cmd *GeoPosCmd) Result() ([]*GeoPos, error)

func (*GeoPosCmd) String ¶

func (cmd *GeoPosCmd) String() string

func (*GeoPosCmd) Val ¶

func (cmd *GeoPosCmd) Val() []*GeoPos

type GeoRadiusQuery ¶

type GeoRadiusQuery struct {
	Radius float64
	// Can be m, km, ft, or mi. Default is km.
	Unit        string
	WithCoord   bool
	WithDist    bool
	WithGeoHash bool
	Count       int
	// Can be ASC or DESC. Default is no sort order.
	Sort string
}

GeoRadiusQuery is used with GeoRadius to query geospatial index.

type IntCmd ¶

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

func NewIntCmd ¶

func NewIntCmd(args ...interface{}) *IntCmd

func NewIntResult ¶

func NewIntResult(val int64, err error) *IntCmd

NewIntResult returns an IntCmd initalised with val and err for testing

func (*IntCmd) Err ¶

func (cmd *IntCmd) Err() error

func (*IntCmd) Result ¶

func (cmd *IntCmd) Result() (int64, error)

func (*IntCmd) String ¶

func (cmd *IntCmd) String() string

func (*IntCmd) Val ¶

func (cmd *IntCmd) Val() int64

type Message ¶

type Message struct {
	Channel string
	Pattern string
	Payload string
}

Message received as result of a PUBLISH command issued by another client.

func (*Message) String ¶

func (m *Message) String() string

type Options ¶

type Options struct {
	// The network type, either tcp or unix.
	// Default is tcp.
	Network string
	// host:port address.
	Addr string

	// Dialer creates new network connection and has priority over
	// Network and Addr options.
	Dialer func() (net.Conn, error)

	// Optional password. Must match the password specified in the
	// requirepass server configuration option.
	Password string
	// Database to be selected after connecting to the server.
	DB int

	// Maximum number of retries before giving up.
	// Default is to not retry failed commands.
	MaxRetries int

	// Dial timeout for establishing new connections.
	// Default is 5 seconds.
	DialTimeout time.Duration
	// Timeout for socket reads. If reached, commands will fail
	// with a timeout instead of blocking.
	// Default is 3 seconds.
	ReadTimeout time.Duration
	// Timeout for socket writes. If reached, commands will fail
	// with a timeout instead of blocking.
	// Default is 3 seconds.
	WriteTimeout time.Duration

	// Maximum number of socket connections.
	// Default is 10 connections.
	PoolSize int
	// Amount of time client waits for connection if all connections
	// are busy before returning an error.
	// Default is ReadTimeout + 1 second.
	PoolTimeout time.Duration
	// Amount of time after which client closes idle connections.
	// Should be less than server's timeout.
	// Default is to not close idle connections.
	IdleTimeout time.Duration
	// Frequency of idle checks.
	// Default is 1 minute.
	// When minus value is set, then idle check is disabled.
	IdleCheckFrequency time.Duration

	// Enables read only queries on slave nodes.
	ReadOnly bool
}

type Pipeline ¶

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

Pipeline implements pipelining as described in http://redis.io/topics/pipelining. It's safe for concurrent use by multiple goroutines.

Example ¶
pipe := client.Pipeline()
defer pipe.Close()

incr := pipe.Incr("counter2")
pipe.Expire("counter2", time.Hour)
_, err := pipe.Exec()
fmt.Println(incr.Val(), err)
Output:

1 <nil>

func (*Pipeline) Append ¶

func (c *Pipeline) Append(key, value string) *IntCmd

func (*Pipeline) Auth ¶

func (c *Pipeline) Auth(password string) *StatusCmd

func (*Pipeline) BLPop ¶

func (c *Pipeline) BLPop(timeout time.Duration, keys ...string) *StringSliceCmd

func (*Pipeline) BRPop ¶

func (c *Pipeline) BRPop(timeout time.Duration, keys ...string) *StringSliceCmd

func (*Pipeline) BRPopLPush ¶

func (c *Pipeline) BRPopLPush(source, destination string, timeout time.Duration) *StringCmd

func (*Pipeline) BgRewriteAOF ¶

func (c *Pipeline) BgRewriteAOF() *StatusCmd

func (*Pipeline) BgSave ¶

func (c *Pipeline) BgSave() *StatusCmd

func (*Pipeline) BitCount ¶

func (c *Pipeline) BitCount(key string, bitCount *BitCount) *IntCmd

func (*Pipeline) BitOpAnd ¶

func (c *Pipeline) BitOpAnd(destKey string, keys ...string) *IntCmd

func (*Pipeline) BitOpNot ¶

func (c *Pipeline) BitOpNot(destKey string, key string) *IntCmd

func (*Pipeline) BitOpOr ¶

func (c *Pipeline) BitOpOr(destKey string, keys ...string) *IntCmd

func (*Pipeline) BitOpXor ¶

func (c *Pipeline) BitOpXor(destKey string, keys ...string) *IntCmd

func (*Pipeline) BitPos ¶

func (c *Pipeline) BitPos(key string, bit int64, pos ...int64) *IntCmd

func (*Pipeline) ClientKill ¶

func (c *Pipeline) ClientKill(ipPort string) *StatusCmd

func (*Pipeline) ClientList ¶

func (c *Pipeline) ClientList() *StringCmd

func (*Pipeline) ClientPause ¶

func (c *Pipeline) ClientPause(dur time.Duration) *BoolCmd

func (*Pipeline) ClientSetName ¶

func (c *Pipeline) ClientSetName(name string) *BoolCmd

ClientSetName assigns a name to the one of many connections in the pool.

func (*Pipeline) Close ¶

func (c *Pipeline) Close() error

Close closes the pipeline, releasing any open resources.

func (*Pipeline) ClusterAddSlots ¶

func (c *Pipeline) ClusterAddSlots(slots ...int) *StatusCmd

func (*Pipeline) ClusterAddSlotsRange ¶

func (c *Pipeline) ClusterAddSlotsRange(min, max int) *StatusCmd

func (*Pipeline) ClusterCountFailureReports ¶

func (c *Pipeline) ClusterCountFailureReports(nodeID string) *IntCmd

func (*Pipeline) ClusterCountKeysInSlot ¶

func (c *Pipeline) ClusterCountKeysInSlot(slot int) *IntCmd

func (*Pipeline) ClusterDelSlots ¶

func (c *Pipeline) ClusterDelSlots(slots ...int) *StatusCmd

func (*Pipeline) ClusterDelSlotsRange ¶

func (c *Pipeline) ClusterDelSlotsRange(min, max int) *StatusCmd

func (*Pipeline) ClusterFailover ¶

func (c *Pipeline) ClusterFailover() *StatusCmd

func (*Pipeline) ClusterForget ¶

func (c *Pipeline) ClusterForget(nodeID string) *StatusCmd

func (*Pipeline) ClusterInfo ¶

func (c *Pipeline) ClusterInfo() *StringCmd

func (*Pipeline) ClusterKeySlot ¶

func (c *Pipeline) ClusterKeySlot(key string) *IntCmd

func (*Pipeline) ClusterMeet ¶

func (c *Pipeline) ClusterMeet(host, port string) *StatusCmd

func (*Pipeline) ClusterNodes ¶

func (c *Pipeline) ClusterNodes() *StringCmd

func (*Pipeline) ClusterReplicate ¶

func (c *Pipeline) ClusterReplicate(nodeID string) *StatusCmd

func (*Pipeline) ClusterResetHard ¶

func (c *Pipeline) ClusterResetHard() *StatusCmd

func (*Pipeline) ClusterResetSoft ¶

func (c *Pipeline) ClusterResetSoft() *StatusCmd

func (*Pipeline) ClusterSaveConfig ¶

func (c *Pipeline) ClusterSaveConfig() *StatusCmd

func (*Pipeline) ClusterSlaves ¶

func (c *Pipeline) ClusterSlaves(nodeID string) *StringSliceCmd

func (*Pipeline) ClusterSlots ¶

func (c *Pipeline) ClusterSlots() *ClusterSlotsCmd

func (*Pipeline) Command ¶

func (c *Pipeline) Command() *CommandsInfoCmd

func (*Pipeline) ConfigGet ¶

func (c *Pipeline) ConfigGet(parameter string) *SliceCmd

func (*Pipeline) ConfigResetStat ¶

func (c *Pipeline) ConfigResetStat() *StatusCmd

func (*Pipeline) ConfigSet ¶

func (c *Pipeline) ConfigSet(parameter, value string) *StatusCmd

func (*Pipeline) DbSize ¶

func (c *Pipeline) DbSize() *IntCmd

func (*Pipeline) DebugObject ¶

func (c *Pipeline) DebugObject(key string) *StringCmd

func (*Pipeline) Decr ¶

func (c *Pipeline) Decr(key string) *IntCmd

func (*Pipeline) DecrBy ¶

func (c *Pipeline) DecrBy(key string, decrement int64) *IntCmd

func (*Pipeline) Del ¶

func (c *Pipeline) Del(keys ...string) *IntCmd

func (*Pipeline) Discard ¶

func (c *Pipeline) Discard() error

Discard resets the pipeline and discards queued commands.

func (*Pipeline) Dump ¶

func (c *Pipeline) Dump(key string) *StringCmd

func (*Pipeline) Echo ¶

func (c *Pipeline) Echo(message interface{}) *StringCmd

func (*Pipeline) Eval ¶

func (c *Pipeline) Eval(script string, keys []string, args ...interface{}) *Cmd

func (*Pipeline) EvalSha ¶

func (c *Pipeline) EvalSha(sha1 string, keys []string, args ...interface{}) *Cmd

func (*Pipeline) Exec ¶

func (c *Pipeline) Exec() ([]Cmder, error)

Exec executes all previously queued commands using one client-server roundtrip.

Exec always returns list of commands and error of the first failed command if any.

func (*Pipeline) Exists ¶

func (c *Pipeline) Exists(key string) *BoolCmd

func (*Pipeline) Expire ¶

func (c *Pipeline) Expire(key string, expiration time.Duration) *BoolCmd

func (*Pipeline) ExpireAt ¶

func (c *Pipeline) ExpireAt(key string, tm time.Time) *BoolCmd

func (*Pipeline) FlushAll ¶

func (c *Pipeline) FlushAll() *StatusCmd

func (*Pipeline) FlushDb ¶

func (c *Pipeline) FlushDb() *StatusCmd

func (*Pipeline) GeoAdd ¶

func (c *Pipeline) GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd

func (*Pipeline) GeoDist ¶

func (c *Pipeline) GeoDist(key string, member1, member2, unit string) *FloatCmd

func (*Pipeline) GeoHash ¶

func (c *Pipeline) GeoHash(key string, members ...string) *StringSliceCmd

func (*Pipeline) GeoPos ¶

func (c *Pipeline) GeoPos(key string, members ...string) *GeoPosCmd

func (*Pipeline) GeoRadius ¶

func (c *Pipeline) GeoRadius(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd

func (*Pipeline) GeoRadiusByMember ¶

func (c *Pipeline) GeoRadiusByMember(key, member string, query *GeoRadiusQuery) *GeoLocationCmd

func (*Pipeline) Get ¶

func (c *Pipeline) Get(key string) *StringCmd

func (*Pipeline) GetBit ¶

func (c *Pipeline) GetBit(key string, offset int64) *IntCmd

func (*Pipeline) GetRange ¶

func (c *Pipeline) GetRange(key string, start, end int64) *StringCmd

func (*Pipeline) GetSet ¶

func (c *Pipeline) GetSet(key string, value interface{}) *StringCmd

func (*Pipeline) HDel ¶

func (c *Pipeline) HDel(key string, fields ...string) *IntCmd

func (*Pipeline) HExists ¶

func (c *Pipeline) HExists(key, field string) *BoolCmd

func (*Pipeline) HGet ¶

func (c *Pipeline) HGet(key, field string) *StringCmd

func (*Pipeline) HGetAll ¶

func (c *Pipeline) HGetAll(key string) *StringStringMapCmd

func (*Pipeline) HIncrBy ¶

func (c *Pipeline) HIncrBy(key, field string, incr int64) *IntCmd

func (*Pipeline) HIncrByFloat ¶

func (c *Pipeline) HIncrByFloat(key, field string, incr float64) *FloatCmd

func (*Pipeline) HKeys ¶

func (c *Pipeline) HKeys(key string) *StringSliceCmd

func (*Pipeline) HLen ¶

func (c *Pipeline) HLen(key string) *IntCmd

func (*Pipeline) HMGet ¶

func (c *Pipeline) HMGet(key string, fields ...string) *SliceCmd

func (*Pipeline) HMSet ¶

func (c *Pipeline) HMSet(key string, fields map[string]string) *StatusCmd

func (*Pipeline) HScan ¶

func (c *Pipeline) HScan(key string, cursor uint64, match string, count int64) Scanner

func (*Pipeline) HSet ¶

func (c *Pipeline) HSet(key, field, value string) *BoolCmd

func (*Pipeline) HSetNX ¶

func (c *Pipeline) HSetNX(key, field, value string) *BoolCmd

func (*Pipeline) HVals ¶

func (c *Pipeline) HVals(key string) *StringSliceCmd

func (*Pipeline) Incr ¶

func (c *Pipeline) Incr(key string) *IntCmd

func (*Pipeline) IncrBy ¶

func (c *Pipeline) IncrBy(key string, value int64) *IntCmd

func (*Pipeline) IncrByFloat ¶

func (c *Pipeline) IncrByFloat(key string, value float64) *FloatCmd

func (*Pipeline) Info ¶

func (c *Pipeline) Info(section ...string) *StringCmd

func (*Pipeline) Keys ¶

func (c *Pipeline) Keys(pattern string) *StringSliceCmd

func (*Pipeline) LIndex ¶

func (c *Pipeline) LIndex(key string, index int64) *StringCmd

func (*Pipeline) LInsert ¶

func (c *Pipeline) LInsert(key, op string, pivot, value interface{}) *IntCmd

func (*Pipeline) LInsertAfter ¶

func (c *Pipeline) LInsertAfter(key string, pivot, value interface{}) *IntCmd

func (*Pipeline) LInsertBefore ¶

func (c *Pipeline) LInsertBefore(key string, pivot, value interface{}) *IntCmd

func (*Pipeline) LLen ¶

func (c *Pipeline) LLen(key string) *IntCmd

func (*Pipeline) LPop ¶

func (c *Pipeline) LPop(key string) *StringCmd

func (*Pipeline) LPush ¶

func (c *Pipeline) LPush(key string, values ...interface{}) *IntCmd

func (*Pipeline) LPushX ¶

func (c *Pipeline) LPushX(key string, value interface{}) *IntCmd

func (*Pipeline) LRange ¶

func (c *Pipeline) LRange(key string, start, stop int64) *StringSliceCmd

func (*Pipeline) LRem ¶

func (c *Pipeline) LRem(key string, count int64, value interface{}) *IntCmd

func (*Pipeline) LSet ¶

func (c *Pipeline) LSet(key string, index int64, value interface{}) *StatusCmd

func (*Pipeline) LTrim ¶

func (c *Pipeline) LTrim(key string, start, stop int64) *StatusCmd

func (*Pipeline) LastSave ¶

func (c *Pipeline) LastSave() *IntCmd

func (*Pipeline) MGet ¶

func (c *Pipeline) MGet(keys ...string) *SliceCmd

func (*Pipeline) MSet ¶

func (c *Pipeline) MSet(pairs ...interface{}) *StatusCmd

func (*Pipeline) MSetNX ¶

func (c *Pipeline) MSetNX(pairs ...interface{}) *BoolCmd

func (*Pipeline) Migrate ¶

func (c *Pipeline) Migrate(host, port, key string, db int64, timeout time.Duration) *StatusCmd

func (*Pipeline) Move ¶

func (c *Pipeline) Move(key string, db int64) *BoolCmd

func (*Pipeline) ObjectEncoding ¶

func (c *Pipeline) ObjectEncoding(keys ...string) *StringCmd

func (*Pipeline) ObjectIdleTime ¶

func (c *Pipeline) ObjectIdleTime(keys ...string) *DurationCmd

func (*Pipeline) ObjectRefCount ¶

func (c *Pipeline) ObjectRefCount(keys ...string) *IntCmd

func (*Pipeline) PExpire ¶

func (c *Pipeline) PExpire(key string, expiration time.Duration) *BoolCmd

func (*Pipeline) PExpireAt ¶

func (c *Pipeline) PExpireAt(key string, tm time.Time) *BoolCmd

func (*Pipeline) PFAdd ¶

func (c *Pipeline) PFAdd(key string, els ...interface{}) *IntCmd

func (*Pipeline) PFCount ¶

func (c *Pipeline) PFCount(keys ...string) *IntCmd

func (*Pipeline) PFMerge ¶

func (c *Pipeline) PFMerge(dest string, keys ...string) *StatusCmd

func (*Pipeline) PTTL ¶

func (c *Pipeline) PTTL(key string) *DurationCmd

func (*Pipeline) Persist ¶

func (c *Pipeline) Persist(key string) *BoolCmd

func (*Pipeline) Ping ¶

func (c *Pipeline) Ping() *StatusCmd

func (*Pipeline) Process ¶

func (c *Pipeline) Process(cmd Cmder) error

func (*Pipeline) PubSubChannels ¶

func (c *Pipeline) PubSubChannels(pattern string) *StringSliceCmd

func (*Pipeline) PubSubNumPat ¶

func (c *Pipeline) PubSubNumPat() *IntCmd

func (*Pipeline) PubSubNumSub ¶

func (c *Pipeline) PubSubNumSub(channels ...string) *StringIntMapCmd

func (*Pipeline) Publish ¶

func (c *Pipeline) Publish(channel, message string) *IntCmd

Publish posts the message to the channel.

func (*Pipeline) Quit ¶

func (c *Pipeline) Quit() *StatusCmd

func (*Pipeline) RPop ¶

func (c *Pipeline) RPop(key string) *StringCmd

func (*Pipeline) RPopLPush ¶

func (c *Pipeline) RPopLPush(source, destination string) *StringCmd

func (*Pipeline) RPush ¶

func (c *Pipeline) RPush(key string, values ...interface{}) *IntCmd

func (*Pipeline) RPushX ¶

func (c *Pipeline) RPushX(key string, value interface{}) *IntCmd

func (*Pipeline) RandomKey ¶

func (c *Pipeline) RandomKey() *StringCmd

func (*Pipeline) ReadOnly ¶

func (c *Pipeline) ReadOnly() *StatusCmd

func (*Pipeline) ReadWrite ¶

func (c *Pipeline) ReadWrite() *StatusCmd

func (*Pipeline) Rename ¶

func (c *Pipeline) Rename(key, newkey string) *StatusCmd

func (*Pipeline) RenameNX ¶

func (c *Pipeline) RenameNX(key, newkey string) *BoolCmd

func (*Pipeline) Restore ¶

func (c *Pipeline) Restore(key string, ttl time.Duration, value string) *StatusCmd

func (*Pipeline) RestoreReplace ¶

func (c *Pipeline) RestoreReplace(key string, ttl time.Duration, value string) *StatusCmd

func (*Pipeline) SAdd ¶

func (c *Pipeline) SAdd(key string, members ...interface{}) *IntCmd

func (*Pipeline) SCard ¶

func (c *Pipeline) SCard(key string) *IntCmd

func (*Pipeline) SDiff ¶

func (c *Pipeline) SDiff(keys ...string) *StringSliceCmd

func (*Pipeline) SDiffStore ¶

func (c *Pipeline) SDiffStore(destination string, keys ...string) *IntCmd

func (*Pipeline) SInter ¶

func (c *Pipeline) SInter(keys ...string) *StringSliceCmd

func (*Pipeline) SInterStore ¶

func (c *Pipeline) SInterStore(destination string, keys ...string) *IntCmd

func (*Pipeline) SIsMember ¶

func (c *Pipeline) SIsMember(key string, member interface{}) *BoolCmd

func (*Pipeline) SMembers ¶

func (c *Pipeline) SMembers(key string) *StringSliceCmd

func (*Pipeline) SMove ¶

func (c *Pipeline) SMove(source, destination string, member interface{}) *BoolCmd

func (*Pipeline) SPop ¶

func (c *Pipeline) SPop(key string) *StringCmd

Redis `SPOP key` command.

func (*Pipeline) SPopN ¶

func (c *Pipeline) SPopN(key string, count int64) *StringSliceCmd

Redis `SPOP key count` command.

func (*Pipeline) SRandMember ¶

func (c *Pipeline) SRandMember(key string) *StringCmd

Redis `SRANDMEMBER key` command.

func (*Pipeline) SRandMemberN ¶

func (c *Pipeline) SRandMemberN(key string, count int64) *StringSliceCmd

Redis `SRANDMEMBER key count` command.

func (*Pipeline) SRem ¶

func (c *Pipeline) SRem(key string, members ...interface{}) *IntCmd

func (*Pipeline) SScan ¶

func (c *Pipeline) SScan(key string, cursor uint64, match string, count int64) Scanner

func (*Pipeline) SUnion ¶

func (c *Pipeline) SUnion(keys ...string) *StringSliceCmd

func (*Pipeline) SUnionStore ¶

func (c *Pipeline) SUnionStore(destination string, keys ...string) *IntCmd

func (*Pipeline) Save ¶

func (c *Pipeline) Save() *StatusCmd

func (*Pipeline) Scan ¶

func (c *Pipeline) Scan(cursor uint64, match string, count int64) Scanner

func (*Pipeline) ScriptExists ¶

func (c *Pipeline) ScriptExists(scripts ...string) *BoolSliceCmd

func (*Pipeline) ScriptFlush ¶

func (c *Pipeline) ScriptFlush() *StatusCmd

func (*Pipeline) ScriptKill ¶

func (c *Pipeline) ScriptKill() *StatusCmd

func (*Pipeline) ScriptLoad ¶

func (c *Pipeline) ScriptLoad(script string) *StringCmd

func (*Pipeline) Select ¶

func (c *Pipeline) Select(index int) *StatusCmd

func (*Pipeline) Set ¶

func (c *Pipeline) Set(key string, value interface{}, expiration time.Duration) *StatusCmd

Redis `SET key value [expiration]` command.

Zero expiration means the key has no expiration time.

func (*Pipeline) SetBit ¶

func (c *Pipeline) SetBit(key string, offset int64, value int) *IntCmd

func (*Pipeline) SetNX ¶

func (c *Pipeline) SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd

Redis `SET key value [expiration] NX` command.

Zero expiration means the key has no expiration time.

func (*Pipeline) SetRange ¶

func (c *Pipeline) SetRange(key string, offset int64, value string) *IntCmd

func (*Pipeline) SetXX ¶

func (c *Pipeline) SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd

Redis `SET key value [expiration] XX` command.

Zero expiration means the key has no expiration time.

func (*Pipeline) Shutdown ¶

func (c *Pipeline) Shutdown() *StatusCmd

func (*Pipeline) ShutdownNoSave ¶

func (c *Pipeline) ShutdownNoSave() *StatusCmd

func (*Pipeline) ShutdownSave ¶

func (c *Pipeline) ShutdownSave() *StatusCmd

func (*Pipeline) SlaveOf ¶

func (c *Pipeline) SlaveOf(host, port string) *StatusCmd

func (*Pipeline) SlowLog ¶

func (c *Pipeline) SlowLog()

func (*Pipeline) Sort ¶

func (c *Pipeline) Sort(key string, sort Sort) *StringSliceCmd

func (*Pipeline) SortInterfaces ¶

func (c *Pipeline) SortInterfaces(key string, sort Sort) *SliceCmd

func (*Pipeline) StrLen ¶

func (c *Pipeline) StrLen(key string) *IntCmd

func (*Pipeline) Sync ¶

func (c *Pipeline) Sync()

func (*Pipeline) TTL ¶

func (c *Pipeline) TTL(key string) *DurationCmd

func (*Pipeline) Time ¶

func (c *Pipeline) Time() *StringSliceCmd

TODO: add TimeCmd and use it here

func (*Pipeline) Type ¶

func (c *Pipeline) Type(key string) *StatusCmd

func (*Pipeline) WrapProcess ¶

func (c *Pipeline) WrapProcess(createWrapper func(oldProcess func(cmd Cmder) error) func(cmd Cmder) error)

WrapProcess replaces the process func. It takes a function createWrapper which is supplied by the user. createWrapper takes the old process func as an input and returns the new wrapper process func. createWrapper should use call the old process func within the new process func.

func (*Pipeline) ZAdd ¶

func (c *Pipeline) ZAdd(key string, members ...Z) *IntCmd

Redis `ZADD key score member [score member ...]` command.

func (*Pipeline) ZAddCh ¶

func (c *Pipeline) ZAddCh(key string, members ...Z) *IntCmd

Redis `ZADD key CH score member [score member ...]` command.

func (*Pipeline) ZAddNX ¶

func (c *Pipeline) ZAddNX(key string, members ...Z) *IntCmd

Redis `ZADD key NX score member [score member ...]` command.

func (*Pipeline) ZAddNXCh ¶

func (c *Pipeline) ZAddNXCh(key string, members ...Z) *IntCmd

Redis `ZADD key NX CH score member [score member ...]` command.

func (*Pipeline) ZAddXX ¶

func (c *Pipeline) ZAddXX(key string, members ...Z) *IntCmd

Redis `ZADD key XX score member [score member ...]` command.

func (*Pipeline) ZAddXXCh ¶

func (c *Pipeline) ZAddXXCh(key string, members ...Z) *IntCmd

Redis `ZADD key XX CH score member [score member ...]` command.

func (*Pipeline) ZCard ¶

func (c *Pipeline) ZCard(key string) *IntCmd

func (*Pipeline) ZCount ¶

func (c *Pipeline) ZCount(key, min, max string) *IntCmd

func (*Pipeline) ZIncr ¶

func (c *Pipeline) ZIncr(key string, member Z) *FloatCmd

Redis `ZADD key INCR score member` command.

func (*Pipeline) ZIncrBy ¶

func (c *Pipeline) ZIncrBy(key string, increment float64, member string) *FloatCmd

func (*Pipeline) ZIncrNX ¶

func (c *Pipeline) ZIncrNX(key string, member Z) *FloatCmd

Redis `ZADD key NX INCR score member` command.

func (*Pipeline) ZIncrXX ¶

func (c *Pipeline) ZIncrXX(key string, member Z) *FloatCmd

Redis `ZADD key XX INCR score member` command.

func (*Pipeline) ZInterStore ¶

func (c *Pipeline) ZInterStore(destination string, store ZStore, keys ...string) *IntCmd

func (*Pipeline) ZRange ¶

func (c *Pipeline) ZRange(key string, start, stop int64) *StringSliceCmd

func (*Pipeline) ZRangeByLex ¶

func (c *Pipeline) ZRangeByLex(key string, opt ZRangeBy) *StringSliceCmd

func (*Pipeline) ZRangeByScore ¶

func (c *Pipeline) ZRangeByScore(key string, opt ZRangeBy) *StringSliceCmd

func (*Pipeline) ZRangeByScoreWithScores ¶

func (c *Pipeline) ZRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd

func (*Pipeline) ZRangeWithScores ¶

func (c *Pipeline) ZRangeWithScores(key string, start, stop int64) *ZSliceCmd

func (*Pipeline) ZRank ¶

func (c *Pipeline) ZRank(key, member string) *IntCmd

func (*Pipeline) ZRem ¶

func (c *Pipeline) ZRem(key string, members ...interface{}) *IntCmd

func (*Pipeline) ZRemRangeByRank ¶

func (c *Pipeline) ZRemRangeByRank(key string, start, stop int64) *IntCmd

func (*Pipeline) ZRemRangeByScore ¶

func (c *Pipeline) ZRemRangeByScore(key, min, max string) *IntCmd

func (*Pipeline) ZRevRange ¶

func (c *Pipeline) ZRevRange(key string, start, stop int64) *StringSliceCmd

func (*Pipeline) ZRevRangeByLex ¶

func (c *Pipeline) ZRevRangeByLex(key string, opt ZRangeBy) *StringSliceCmd

func (*Pipeline) ZRevRangeByScore ¶

func (c *Pipeline) ZRevRangeByScore(key string, opt ZRangeBy) *StringSliceCmd

func (*Pipeline) ZRevRangeByScoreWithScores ¶

func (c *Pipeline) ZRevRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd

func (*Pipeline) ZRevRangeWithScores ¶

func (c *Pipeline) ZRevRangeWithScores(key string, start, stop int64) *ZSliceCmd

func (*Pipeline) ZRevRank ¶

func (c *Pipeline) ZRevRank(key, member string) *IntCmd

func (*Pipeline) ZScan ¶

func (c *Pipeline) ZScan(key string, cursor uint64, match string, count int64) Scanner

func (*Pipeline) ZScore ¶

func (c *Pipeline) ZScore(key, member string) *FloatCmd

func (*Pipeline) ZUnionStore ¶

func (c *Pipeline) ZUnionStore(dest string, store ZStore, keys ...string) *IntCmd

type Pong ¶

type Pong struct {
	Payload string
}

Pong received as result of a PING command issued by another client.

func (*Pong) String ¶

func (p *Pong) String() string

type PoolStats ¶

type PoolStats struct {
	Requests uint32 // number of times a connection was requested by the pool
	Hits     uint32 // number of times free connection was found in the pool
	Timeouts uint32 // number of times a wait timeout occurred

	TotalConns uint32 // the number of total connections in the pool
	FreeConns  uint32 // the number of free connections in the pool
}

PoolStats contains pool state information and accumulated stats.

type PubSub ¶

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

PubSub implements Pub/Sub commands as described in http://redis.io/topics/pubsub. It's NOT safe for concurrent use by multiple goroutines.

Example ¶
pubsub, err := client.Subscribe("mychannel1")
if err != nil {
	panic(err)
}
defer pubsub.Close()

err = client.Publish("mychannel1", "hello").Err()
if err != nil {
	panic(err)
}

msg, err := pubsub.ReceiveMessage()
if err != nil {
	panic(err)
}

fmt.Println(msg.Channel, msg.Payload)
Output:

mychannel1 hello

func (*PubSub) Close ¶

func (c *PubSub) Close() error

func (*PubSub) PSubscribe ¶

func (c *PubSub) PSubscribe(patterns ...string) error

Subscribes the client to the given patterns.

func (*PubSub) PUnsubscribe ¶

func (c *PubSub) PUnsubscribe(patterns ...string) error

Unsubscribes the client from the given patterns, or from all of them if none is given.

func (*PubSub) Ping ¶

func (c *PubSub) Ping(payload string) error

func (*PubSub) Receive ¶

func (c *PubSub) Receive() (interface{}, error)

Receive returns a message as a Subscription, Message, Pong or error. See PubSub example for details. This is low-level API and most clients should use ReceiveMessage.

Example ¶
pubsub, err := client.Subscribe("mychannel2")
if err != nil {
	panic(err)
}
defer pubsub.Close()

n, err := client.Publish("mychannel2", "hello").Result()
if err != nil {
	panic(err)
}
fmt.Println(n, "clients received message")

for i := 0; i < 2; i++ {
	// ReceiveTimeout is a low level API. Use ReceiveMessage instead.
	msgi, err := pubsub.ReceiveTimeout(5 * time.Second)
	if err != nil {
		break
	}

	switch msg := msgi.(type) {
	case *redis.Subscription:
		fmt.Println("subscribed to", msg.Channel)
	case *redis.Message:
		fmt.Println("received", msg.Payload, "from", msg.Channel)
	default:
		panic(fmt.Errorf("unknown message: %#v", msgi))
	}
}
Output:

1 clients received message
subscribed to mychannel2
received hello from mychannel2

func (*PubSub) ReceiveMessage ¶

func (c *PubSub) ReceiveMessage() (*Message, error)

ReceiveMessage returns a Message or error ignoring Subscription or Pong messages. It automatically reconnects to Redis Server and resubscribes to channels in case of network errors.

func (*PubSub) ReceiveTimeout ¶

func (c *PubSub) ReceiveTimeout(timeout time.Duration) (interface{}, error)

ReceiveTimeout acts like Receive but returns an error if message is not received in time. This is low-level API and most clients should use ReceiveMessage.

func (*PubSub) Subscribe ¶

func (c *PubSub) Subscribe(channels ...string) error

Subscribes the client to the specified channels.

func (*PubSub) Unsubscribe ¶

func (c *PubSub) Unsubscribe(channels ...string) error

Unsubscribes the client from the given channels, or from all of them if none is given.

type Ring ¶

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

Ring is a Redis client that uses constistent hashing to distribute keys across multiple Redis servers (shards). It's safe for concurrent use by multiple goroutines.

Ring monitors the state of each shard and removes dead shards from the ring. When shard comes online it is added back to the ring. This gives you maximum availability and partition tolerance, but no consistency between different shards or even clients. Each client uses shards that are available to the client and does not do any coordination when shard state is changed.

Ring should be used when you need multiple Redis servers for caching and can tolerate losing data when one of the servers dies. Otherwise you should use Redis Cluster.

func NewRing ¶

func NewRing(opt *RingOptions) *Ring
Example ¶
client := redis.NewRing(&redis.RingOptions{
	Addrs: map[string]string{
		"shard1": ":7000",
		"shard2": ":7001",
		"shard3": ":7002",
	},
})
client.Ping()
Output:

func (*Ring) Append ¶

func (c *Ring) Append(key, value string) *IntCmd

func (*Ring) BLPop ¶

func (c *Ring) BLPop(timeout time.Duration, keys ...string) *StringSliceCmd

func (*Ring) BRPop ¶

func (c *Ring) BRPop(timeout time.Duration, keys ...string) *StringSliceCmd

func (*Ring) BRPopLPush ¶

func (c *Ring) BRPopLPush(source, destination string, timeout time.Duration) *StringCmd

func (*Ring) BgRewriteAOF ¶

func (c *Ring) BgRewriteAOF() *StatusCmd

func (*Ring) BgSave ¶

func (c *Ring) BgSave() *StatusCmd

func (*Ring) BitCount ¶

func (c *Ring) BitCount(key string, bitCount *BitCount) *IntCmd

func (*Ring) BitOpAnd ¶

func (c *Ring) BitOpAnd(destKey string, keys ...string) *IntCmd

func (*Ring) BitOpNot ¶

func (c *Ring) BitOpNot(destKey string, key string) *IntCmd

func (*Ring) BitOpOr ¶

func (c *Ring) BitOpOr(destKey string, keys ...string) *IntCmd

func (*Ring) BitOpXor ¶

func (c *Ring) BitOpXor(destKey string, keys ...string) *IntCmd

func (*Ring) BitPos ¶

func (c *Ring) BitPos(key string, bit int64, pos ...int64) *IntCmd

func (*Ring) ClientKill ¶

func (c *Ring) ClientKill(ipPort string) *StatusCmd

func (*Ring) ClientList ¶

func (c *Ring) ClientList() *StringCmd

func (*Ring) ClientPause ¶

func (c *Ring) ClientPause(dur time.Duration) *BoolCmd

func (*Ring) ClientSetName ¶

func (c *Ring) ClientSetName(name string) *BoolCmd

ClientSetName assigns a name to the one of many connections in the pool.

func (*Ring) Close ¶

func (c *Ring) Close() (retErr error)

Close closes the ring client, releasing any open resources.

It is rare to Close a Ring, as the Ring is meant to be long-lived and shared between many goroutines.

func (*Ring) ClusterAddSlots ¶

func (c *Ring) ClusterAddSlots(slots ...int) *StatusCmd

func (*Ring) ClusterAddSlotsRange ¶

func (c *Ring) ClusterAddSlotsRange(min, max int) *StatusCmd

func (*Ring) ClusterCountFailureReports ¶

func (c *Ring) ClusterCountFailureReports(nodeID string) *IntCmd

func (*Ring) ClusterCountKeysInSlot ¶

func (c *Ring) ClusterCountKeysInSlot(slot int) *IntCmd

func (*Ring) ClusterDelSlots ¶

func (c *Ring) ClusterDelSlots(slots ...int) *StatusCmd

func (*Ring) ClusterDelSlotsRange ¶

func (c *Ring) ClusterDelSlotsRange(min, max int) *StatusCmd

func (*Ring) ClusterFailover ¶

func (c *Ring) ClusterFailover() *StatusCmd

func (*Ring) ClusterForget ¶

func (c *Ring) ClusterForget(nodeID string) *StatusCmd

func (*Ring) ClusterInfo ¶

func (c *Ring) ClusterInfo() *StringCmd

func (*Ring) ClusterKeySlot ¶

func (c *Ring) ClusterKeySlot(key string) *IntCmd

func (*Ring) ClusterMeet ¶

func (c *Ring) ClusterMeet(host, port string) *StatusCmd

func (*Ring) ClusterNodes ¶

func (c *Ring) ClusterNodes() *StringCmd

func (*Ring) ClusterReplicate ¶

func (c *Ring) ClusterReplicate(nodeID string) *StatusCmd

func (*Ring) ClusterResetHard ¶

func (c *Ring) ClusterResetHard() *StatusCmd

func (*Ring) ClusterResetSoft ¶

func (c *Ring) ClusterResetSoft() *StatusCmd

func (*Ring) ClusterSaveConfig ¶

func (c *Ring) ClusterSaveConfig() *StatusCmd

func (*Ring) ClusterSlaves ¶

func (c *Ring) ClusterSlaves(nodeID string) *StringSliceCmd

func (*Ring) ClusterSlots ¶

func (c *Ring) ClusterSlots() *ClusterSlotsCmd

func (*Ring) Command ¶

func (c *Ring) Command() *CommandsInfoCmd

func (*Ring) ConfigGet ¶

func (c *Ring) ConfigGet(parameter string) *SliceCmd

func (*Ring) ConfigResetStat ¶

func (c *Ring) ConfigResetStat() *StatusCmd

func (*Ring) ConfigSet ¶

func (c *Ring) ConfigSet(parameter, value string) *StatusCmd

func (*Ring) DbSize ¶

func (c *Ring) DbSize() *IntCmd

func (*Ring) DebugObject ¶

func (c *Ring) DebugObject(key string) *StringCmd

func (*Ring) Decr ¶

func (c *Ring) Decr(key string) *IntCmd

func (*Ring) DecrBy ¶

func (c *Ring) DecrBy(key string, decrement int64) *IntCmd

func (*Ring) Del ¶

func (c *Ring) Del(keys ...string) *IntCmd

func (*Ring) Dump ¶

func (c *Ring) Dump(key string) *StringCmd

func (*Ring) Echo ¶

func (c *Ring) Echo(message interface{}) *StringCmd

func (*Ring) Eval ¶

func (c *Ring) Eval(script string, keys []string, args ...interface{}) *Cmd

func (*Ring) EvalSha ¶

func (c *Ring) EvalSha(sha1 string, keys []string, args ...interface{}) *Cmd

func (*Ring) Exists ¶

func (c *Ring) Exists(key string) *BoolCmd

func (*Ring) Expire ¶

func (c *Ring) Expire(key string, expiration time.Duration) *BoolCmd

func (*Ring) ExpireAt ¶

func (c *Ring) ExpireAt(key string, tm time.Time) *BoolCmd

func (*Ring) FlushAll ¶

func (c *Ring) FlushAll() *StatusCmd

func (*Ring) FlushDb ¶

func (c *Ring) FlushDb() *StatusCmd

func (*Ring) GeoAdd ¶

func (c *Ring) GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd

func (*Ring) GeoDist ¶

func (c *Ring) GeoDist(key string, member1, member2, unit string) *FloatCmd

func (*Ring) GeoHash ¶

func (c *Ring) GeoHash(key string, members ...string) *StringSliceCmd

func (*Ring) GeoPos ¶

func (c *Ring) GeoPos(key string, members ...string) *GeoPosCmd

func (*Ring) GeoRadius ¶

func (c *Ring) GeoRadius(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd

func (*Ring) GeoRadiusByMember ¶

func (c *Ring) GeoRadiusByMember(key, member string, query *GeoRadiusQuery) *GeoLocationCmd

func (*Ring) Get ¶

func (c *Ring) Get(key string) *StringCmd

func (*Ring) GetBit ¶

func (c *Ring) GetBit(key string, offset int64) *IntCmd

func (*Ring) GetRange ¶

func (c *Ring) GetRange(key string, start, end int64) *StringCmd

func (*Ring) GetSet ¶

func (c *Ring) GetSet(key string, value interface{}) *StringCmd

func (*Ring) HDel ¶

func (c *Ring) HDel(key string, fields ...string) *IntCmd

func (*Ring) HExists ¶

func (c *Ring) HExists(key, field string) *BoolCmd

func (*Ring) HGet ¶

func (c *Ring) HGet(key, field string) *StringCmd

func (*Ring) HGetAll ¶

func (c *Ring) HGetAll(key string) *StringStringMapCmd

func (*Ring) HIncrBy ¶

func (c *Ring) HIncrBy(key, field string, incr int64) *IntCmd

func (*Ring) HIncrByFloat ¶

func (c *Ring) HIncrByFloat(key, field string, incr float64) *FloatCmd

func (*Ring) HKeys ¶

func (c *Ring) HKeys(key string) *StringSliceCmd

func (*Ring) HLen ¶

func (c *Ring) HLen(key string) *IntCmd

func (*Ring) HMGet ¶

func (c *Ring) HMGet(key string, fields ...string) *SliceCmd

func (*Ring) HMSet ¶

func (c *Ring) HMSet(key string, fields map[string]string) *StatusCmd

func (*Ring) HScan ¶

func (c *Ring) HScan(key string, cursor uint64, match string, count int64) Scanner

func (*Ring) HSet ¶

func (c *Ring) HSet(key, field, value string) *BoolCmd

func (*Ring) HSetNX ¶

func (c *Ring) HSetNX(key, field, value string) *BoolCmd

func (*Ring) HVals ¶

func (c *Ring) HVals(key string) *StringSliceCmd

func (*Ring) Incr ¶

func (c *Ring) Incr(key string) *IntCmd

func (*Ring) IncrBy ¶

func (c *Ring) IncrBy(key string, value int64) *IntCmd

func (*Ring) IncrByFloat ¶

func (c *Ring) IncrByFloat(key string, value float64) *FloatCmd

func (*Ring) Info ¶

func (c *Ring) Info(section ...string) *StringCmd

func (*Ring) Keys ¶

func (c *Ring) Keys(pattern string) *StringSliceCmd

func (*Ring) LIndex ¶

func (c *Ring) LIndex(key string, index int64) *StringCmd

func (*Ring) LInsert ¶

func (c *Ring) LInsert(key, op string, pivot, value interface{}) *IntCmd

func (*Ring) LInsertAfter ¶

func (c *Ring) LInsertAfter(key string, pivot, value interface{}) *IntCmd

func (*Ring) LInsertBefore ¶

func (c *Ring) LInsertBefore(key string, pivot, value interface{}) *IntCmd

func (*Ring) LLen ¶

func (c *Ring) LLen(key string) *IntCmd

func (*Ring) LPop ¶

func (c *Ring) LPop(key string) *StringCmd

func (*Ring) LPush ¶

func (c *Ring) LPush(key string, values ...interface{}) *IntCmd

func (*Ring) LPushX ¶

func (c *Ring) LPushX(key string, value interface{}) *IntCmd

func (*Ring) LRange ¶

func (c *Ring) LRange(key string, start, stop int64) *StringSliceCmd

func (*Ring) LRem ¶

func (c *Ring) LRem(key string, count int64, value interface{}) *IntCmd

func (*Ring) LSet ¶

func (c *Ring) LSet(key string, index int64, value interface{}) *StatusCmd

func (*Ring) LTrim ¶

func (c *Ring) LTrim(key string, start, stop int64) *StatusCmd

func (*Ring) LastSave ¶

func (c *Ring) LastSave() *IntCmd

func (*Ring) MGet ¶

func (c *Ring) MGet(keys ...string) *SliceCmd

func (*Ring) MSet ¶

func (c *Ring) MSet(pairs ...interface{}) *StatusCmd

func (*Ring) MSetNX ¶

func (c *Ring) MSetNX(pairs ...interface{}) *BoolCmd

func (*Ring) Migrate ¶

func (c *Ring) Migrate(host, port, key string, db int64, timeout time.Duration) *StatusCmd

func (*Ring) Move ¶

func (c *Ring) Move(key string, db int64) *BoolCmd

func (*Ring) ObjectEncoding ¶

func (c *Ring) ObjectEncoding(keys ...string) *StringCmd

func (*Ring) ObjectIdleTime ¶

func (c *Ring) ObjectIdleTime(keys ...string) *DurationCmd

func (*Ring) ObjectRefCount ¶

func (c *Ring) ObjectRefCount(keys ...string) *IntCmd

func (*Ring) PExpire ¶

func (c *Ring) PExpire(key string, expiration time.Duration) *BoolCmd

func (*Ring) PExpireAt ¶

func (c *Ring) PExpireAt(key string, tm time.Time) *BoolCmd

func (*Ring) PFAdd ¶

func (c *Ring) PFAdd(key string, els ...interface{}) *IntCmd

func (*Ring) PFCount ¶

func (c *Ring) PFCount(keys ...string) *IntCmd

func (*Ring) PFMerge ¶

func (c *Ring) PFMerge(dest string, keys ...string) *StatusCmd

func (*Ring) PTTL ¶

func (c *Ring) PTTL(key string) *DurationCmd

func (*Ring) Persist ¶

func (c *Ring) Persist(key string) *BoolCmd

func (*Ring) Ping ¶

func (c *Ring) Ping() *StatusCmd

func (*Ring) Pipeline ¶

func (c *Ring) Pipeline() *Pipeline

func (*Ring) Pipelined ¶

func (c *Ring) Pipelined(fn func(*Pipeline) error) ([]Cmder, error)

func (*Ring) Process ¶

func (c *Ring) Process(cmd Cmder) error

func (*Ring) PubSubChannels ¶

func (c *Ring) PubSubChannels(pattern string) *StringSliceCmd

func (*Ring) PubSubNumPat ¶

func (c *Ring) PubSubNumPat() *IntCmd

func (*Ring) PubSubNumSub ¶

func (c *Ring) PubSubNumSub(channels ...string) *StringIntMapCmd

func (*Ring) Publish ¶

func (c *Ring) Publish(channel, message string) *IntCmd

Publish posts the message to the channel.

func (*Ring) Quit ¶

func (c *Ring) Quit() *StatusCmd

func (*Ring) RPop ¶

func (c *Ring) RPop(key string) *StringCmd

func (*Ring) RPopLPush ¶

func (c *Ring) RPopLPush(source, destination string) *StringCmd

func (*Ring) RPush ¶

func (c *Ring) RPush(key string, values ...interface{}) *IntCmd

func (*Ring) RPushX ¶

func (c *Ring) RPushX(key string, value interface{}) *IntCmd

func (*Ring) RandomKey ¶

func (c *Ring) RandomKey() *StringCmd

func (*Ring) Rename ¶

func (c *Ring) Rename(key, newkey string) *StatusCmd

func (*Ring) RenameNX ¶

func (c *Ring) RenameNX(key, newkey string) *BoolCmd

func (*Ring) Restore ¶

func (c *Ring) Restore(key string, ttl time.Duration, value string) *StatusCmd

func (*Ring) RestoreReplace ¶

func (c *Ring) RestoreReplace(key string, ttl time.Duration, value string) *StatusCmd

func (*Ring) SAdd ¶

func (c *Ring) SAdd(key string, members ...interface{}) *IntCmd

func (*Ring) SCard ¶

func (c *Ring) SCard(key string) *IntCmd

func (*Ring) SDiff ¶

func (c *Ring) SDiff(keys ...string) *StringSliceCmd

func (*Ring) SDiffStore ¶

func (c *Ring) SDiffStore(destination string, keys ...string) *IntCmd

func (*Ring) SInter ¶

func (c *Ring) SInter(keys ...string) *StringSliceCmd

func (*Ring) SInterStore ¶

func (c *Ring) SInterStore(destination string, keys ...string) *IntCmd

func (*Ring) SIsMember ¶

func (c *Ring) SIsMember(key string, member interface{}) *BoolCmd

func (*Ring) SMembers ¶

func (c *Ring) SMembers(key string) *StringSliceCmd

func (*Ring) SMove ¶

func (c *Ring) SMove(source, destination string, member interface{}) *BoolCmd

func (*Ring) SPop ¶

func (c *Ring) SPop(key string) *StringCmd

Redis `SPOP key` command.

func (*Ring) SPopN ¶

func (c *Ring) SPopN(key string, count int64) *StringSliceCmd

Redis `SPOP key count` command.

func (*Ring) SRandMember ¶

func (c *Ring) SRandMember(key string) *StringCmd

Redis `SRANDMEMBER key` command.

func (*Ring) SRandMemberN ¶

func (c *Ring) SRandMemberN(key string, count int64) *StringSliceCmd

Redis `SRANDMEMBER key count` command.

func (*Ring) SRem ¶

func (c *Ring) SRem(key string, members ...interface{}) *IntCmd

func (*Ring) SScan ¶

func (c *Ring) SScan(key string, cursor uint64, match string, count int64) Scanner

func (*Ring) SUnion ¶

func (c *Ring) SUnion(keys ...string) *StringSliceCmd

func (*Ring) SUnionStore ¶

func (c *Ring) SUnionStore(destination string, keys ...string) *IntCmd

func (*Ring) Save ¶

func (c *Ring) Save() *StatusCmd

func (*Ring) Scan ¶

func (c *Ring) Scan(cursor uint64, match string, count int64) Scanner

func (*Ring) ScriptExists ¶

func (c *Ring) ScriptExists(scripts ...string) *BoolSliceCmd

func (*Ring) ScriptFlush ¶

func (c *Ring) ScriptFlush() *StatusCmd

func (*Ring) ScriptKill ¶

func (c *Ring) ScriptKill() *StatusCmd

func (*Ring) ScriptLoad ¶

func (c *Ring) ScriptLoad(script string) *StringCmd

func (*Ring) Set ¶

func (c *Ring) Set(key string, value interface{}, expiration time.Duration) *StatusCmd

Redis `SET key value [expiration]` command.

Zero expiration means the key has no expiration time.

func (*Ring) SetBit ¶

func (c *Ring) SetBit(key string, offset int64, value int) *IntCmd

func (*Ring) SetNX ¶

func (c *Ring) SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd

Redis `SET key value [expiration] NX` command.

Zero expiration means the key has no expiration time.

func (*Ring) SetRange ¶

func (c *Ring) SetRange(key string, offset int64, value string) *IntCmd

func (*Ring) SetXX ¶

func (c *Ring) SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd

Redis `SET key value [expiration] XX` command.

Zero expiration means the key has no expiration time.

func (*Ring) Shutdown ¶

func (c *Ring) Shutdown() *StatusCmd

func (*Ring) ShutdownNoSave ¶

func (c *Ring) ShutdownNoSave() *StatusCmd

func (*Ring) ShutdownSave ¶

func (c *Ring) ShutdownSave() *StatusCmd

func (*Ring) SlaveOf ¶

func (c *Ring) SlaveOf(host, port string) *StatusCmd

func (*Ring) SlowLog ¶

func (c *Ring) SlowLog()

func (*Ring) Sort ¶

func (c *Ring) Sort(key string, sort Sort) *StringSliceCmd

func (*Ring) SortInterfaces ¶

func (c *Ring) SortInterfaces(key string, sort Sort) *SliceCmd

func (*Ring) StrLen ¶

func (c *Ring) StrLen(key string) *IntCmd

func (*Ring) Sync ¶

func (c *Ring) Sync()

func (*Ring) TTL ¶

func (c *Ring) TTL(key string) *DurationCmd

func (*Ring) Time ¶

func (c *Ring) Time() *StringSliceCmd

TODO: add TimeCmd and use it here

func (*Ring) Type ¶

func (c *Ring) Type(key string) *StatusCmd

func (*Ring) WrapProcess ¶

func (c *Ring) WrapProcess(createWrapper func(oldProcess func(cmd Cmder) error) func(cmd Cmder) error)

WrapProcess replaces the process func. It takes a function createWrapper which is supplied by the user. createWrapper takes the old process func as an input and returns the new wrapper process func. createWrapper should use call the old process func within the new process func.

func (*Ring) ZAdd ¶

func (c *Ring) ZAdd(key string, members ...Z) *IntCmd

Redis `ZADD key score member [score member ...]` command.

func (*Ring) ZAddCh ¶

func (c *Ring) ZAddCh(key string, members ...Z) *IntCmd

Redis `ZADD key CH score member [score member ...]` command.

func (*Ring) ZAddNX ¶

func (c *Ring) ZAddNX(key string, members ...Z) *IntCmd

Redis `ZADD key NX score member [score member ...]` command.

func (*Ring) ZAddNXCh ¶

func (c *Ring) ZAddNXCh(key string, members ...Z) *IntCmd

Redis `ZADD key NX CH score member [score member ...]` command.

func (*Ring) ZAddXX ¶

func (c *Ring) ZAddXX(key string, members ...Z) *IntCmd

Redis `ZADD key XX score member [score member ...]` command.

func (*Ring) ZAddXXCh ¶

func (c *Ring) ZAddXXCh(key string, members ...Z) *IntCmd

Redis `ZADD key XX CH score member [score member ...]` command.

func (*Ring) ZCard ¶

func (c *Ring) ZCard(key string) *IntCmd

func (*Ring) ZCount ¶

func (c *Ring) ZCount(key, min, max string) *IntCmd

func (*Ring) ZIncr ¶

func (c *Ring) ZIncr(key string, member Z) *FloatCmd

Redis `ZADD key INCR score member` command.

func (*Ring) ZIncrBy ¶

func (c *Ring) ZIncrBy(key string, increment float64, member string) *FloatCmd

func (*Ring) ZIncrNX ¶

func (c *Ring) ZIncrNX(key string, member Z) *FloatCmd

Redis `ZADD key NX INCR score member` command.

func (*Ring) ZIncrXX ¶

func (c *Ring) ZIncrXX(key string, member Z) *FloatCmd

Redis `ZADD key XX INCR score member` command.

func (*Ring) ZInterStore ¶

func (c *Ring) ZInterStore(destination string, store ZStore, keys ...string) *IntCmd

func (*Ring) ZRange ¶

func (c *Ring) ZRange(key string, start, stop int64) *StringSliceCmd

func (*Ring) ZRangeByLex ¶

func (c *Ring) ZRangeByLex(key string, opt ZRangeBy) *StringSliceCmd

func (*Ring) ZRangeByScore ¶

func (c *Ring) ZRangeByScore(key string, opt ZRangeBy) *StringSliceCmd

func (*Ring) ZRangeByScoreWithScores ¶

func (c *Ring) ZRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd

func (*Ring) ZRangeWithScores ¶

func (c *Ring) ZRangeWithScores(key string, start, stop int64) *ZSliceCmd

func (*Ring) ZRank ¶

func (c *Ring) ZRank(key, member string) *IntCmd

func (*Ring) ZRem ¶

func (c *Ring) ZRem(key string, members ...interface{}) *IntCmd

func (*Ring) ZRemRangeByRank ¶

func (c *Ring) ZRemRangeByRank(key string, start, stop int64) *IntCmd

func (*Ring) ZRemRangeByScore ¶

func (c *Ring) ZRemRangeByScore(key, min, max string) *IntCmd

func (*Ring) ZRevRange ¶

func (c *Ring) ZRevRange(key string, start, stop int64) *StringSliceCmd

func (*Ring) ZRevRangeByLex ¶

func (c *Ring) ZRevRangeByLex(key string, opt ZRangeBy) *StringSliceCmd

func (*Ring) ZRevRangeByScore ¶

func (c *Ring) ZRevRangeByScore(key string, opt ZRangeBy) *StringSliceCmd

func (*Ring) ZRevRangeByScoreWithScores ¶

func (c *Ring) ZRevRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd

func (*Ring) ZRevRangeWithScores ¶

func (c *Ring) ZRevRangeWithScores(key string, start, stop int64) *ZSliceCmd

func (*Ring) ZRevRank ¶

func (c *Ring) ZRevRank(key, member string) *IntCmd

func (*Ring) ZScan ¶

func (c *Ring) ZScan(key string, cursor uint64, match string, count int64) Scanner

func (*Ring) ZScore ¶

func (c *Ring) ZScore(key, member string) *FloatCmd

func (*Ring) ZUnionStore ¶

func (c *Ring) ZUnionStore(dest string, store ZStore, keys ...string) *IntCmd

type RingOptions ¶

type RingOptions struct {
	// Map of name => host:port addresses of ring shards.
	Addrs map[string]string

	// Frequency of PING commands sent to check shards availability.
	// Shard is considered down after 3 subsequent failed checks.
	HeartbeatFrequency time.Duration

	DB       int
	Password string

	MaxRetries int

	DialTimeout  time.Duration
	ReadTimeout  time.Duration
	WriteTimeout time.Duration

	PoolSize           int
	PoolTimeout        time.Duration
	IdleTimeout        time.Duration
	IdleCheckFrequency time.Duration
}

RingOptions are used to configure a ring client and should be passed to NewRing.

type ScanCmd ¶

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

func NewScanCmd ¶

func NewScanCmd(args ...interface{}) *ScanCmd

func NewScanCmdResult ¶

func NewScanCmdResult(keys []string, cursor uint64, err error) *ScanCmd

NewScanCmdResult returns a ScanCmd initalised with val and err for testing

func (*ScanCmd) Err ¶

func (cmd *ScanCmd) Err() error

func (*ScanCmd) Result ¶

func (cmd *ScanCmd) Result() (keys []string, cursor uint64, err error)

func (*ScanCmd) String ¶

func (cmd *ScanCmd) String() string

func (*ScanCmd) Val ¶

func (cmd *ScanCmd) Val() (keys []string, cursor uint64)

type ScanIterator ¶

type ScanIterator struct {
	Scanner
	// contains filtered or unexported fields
}

ScanIterator is used to incrementally iterate over a collection of elements. It's safe for concurrent use by multiple goroutines.

Example ¶
iter := client.Scan(0, "", 0).Iterator()
for iter.Next() {
	fmt.Println(iter.Val())
}
if err := iter.Err(); err != nil {
	panic(err)
}
Output:

func (*ScanIterator) Err ¶

func (it *ScanIterator) Err() error

Err returns the last iterator error, if any.

func (*ScanIterator) Next ¶

func (it *ScanIterator) Next() bool

Next advances the cursor and returns true if more values can be read.

func (*ScanIterator) Val ¶

func (it *ScanIterator) Val() string

Val returns the key/field at the current cursor position.

type Scanner ¶

type Scanner struct {
	*ScanCmd
	// contains filtered or unexported fields
}

func (Scanner) Err ¶

func (cmd Scanner) Err() error

func (Scanner) Iterator ¶

func (s Scanner) Iterator() *ScanIterator

Iterator creates a new ScanIterator.

type Script ¶

type Script struct {
	// contains filtered or unexported fields
}
Example ¶
IncrByXX := redis.NewScript(`
		if redis.call("GET", KEYS[1]) ~= false then
			return redis.call("INCRBY", KEYS[1], ARGV[1])
		end
		return false
	`)

n, err := IncrByXX.Run(client, []string{"xx_counter"}, 2).Result()
fmt.Println(n, err)

err = client.Set("xx_counter", "40", 0).Err()
if err != nil {
	panic(err)
}

n, err = IncrByXX.Run(client, []string{"xx_counter"}, 2).Result()
fmt.Println(n, err)
Output:

<nil> redis: nil
42 <nil>

func NewScript ¶

func NewScript(src string) *Script

func (*Script) Eval ¶

func (s *Script) Eval(c scripter, keys []string, args ...interface{}) *Cmd

func (*Script) EvalSha ¶

func (s *Script) EvalSha(c scripter, keys []string, args ...interface{}) *Cmd

func (*Script) Exists ¶

func (s *Script) Exists(c scripter) *BoolSliceCmd

func (*Script) Load ¶

func (s *Script) Load(c scripter) *StringCmd

func (*Script) Run ¶

func (s *Script) Run(c scripter, keys []string, args ...interface{}) *Cmd

type SliceCmd ¶

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

func NewSliceCmd ¶

func NewSliceCmd(args ...interface{}) *SliceCmd

func NewSliceResult ¶

func NewSliceResult(val []interface{}, err error) *SliceCmd

NewSliceResult returns a SliceCmd initalised with val and err for testing

func (*SliceCmd) Err ¶

func (cmd *SliceCmd) Err() error

func (*SliceCmd) Result ¶

func (cmd *SliceCmd) Result() ([]interface{}, error)

func (*SliceCmd) String ¶

func (cmd *SliceCmd) String() string

func (*SliceCmd) Val ¶

func (cmd *SliceCmd) Val() []interface{}

type Sort ¶

type Sort struct {
	By            string
	Offset, Count float64
	Get           []string
	Order         string
	IsAlpha       bool
	Store         string
}

type StatusCmd ¶

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

func NewStatusCmd ¶

func NewStatusCmd(args ...interface{}) *StatusCmd

func NewStatusResult ¶

func NewStatusResult(val string, err error) *StatusCmd

NewStatusResult returns a StatusCmd initalised with val and err for testing

func (*StatusCmd) Err ¶

func (cmd *StatusCmd) Err() error

func (*StatusCmd) Result ¶

func (cmd *StatusCmd) Result() (string, error)

func (*StatusCmd) String ¶

func (cmd *StatusCmd) String() string

func (*StatusCmd) Val ¶

func (cmd *StatusCmd) Val() string

type StringCmd ¶

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

func NewStringCmd ¶

func NewStringCmd(args ...interface{}) *StringCmd

func NewStringResult ¶

func NewStringResult(val []byte, err error) *StringCmd

NewStringResult returns a StringCmd initalised with val and err for testing

func (*StringCmd) Bytes ¶

func (cmd *StringCmd) Bytes() ([]byte, error)

func (*StringCmd) Err ¶

func (cmd *StringCmd) Err() error

func (*StringCmd) Float64 ¶

func (cmd *StringCmd) Float64() (float64, error)

func (*StringCmd) Int64 ¶

func (cmd *StringCmd) Int64() (int64, error)

func (*StringCmd) Result ¶

func (cmd *StringCmd) Result() (string, error)

func (*StringCmd) Scan ¶

func (cmd *StringCmd) Scan(val interface{}) error

func (*StringCmd) String ¶

func (cmd *StringCmd) String() string

func (*StringCmd) Uint64 ¶

func (cmd *StringCmd) Uint64() (uint64, error)

func (*StringCmd) Val ¶

func (cmd *StringCmd) Val() string

type StringIntMapCmd ¶

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

func NewStringIntMapCmd ¶

func NewStringIntMapCmd(args ...interface{}) *StringIntMapCmd

func NewStringIntMapCmdResult ¶

func NewStringIntMapCmdResult(val map[string]int64, err error) *StringIntMapCmd

NewStringIntMapCmdResult returns a StringIntMapCmd initalised with val and err for testing

func (*StringIntMapCmd) Err ¶

func (cmd *StringIntMapCmd) Err() error

func (*StringIntMapCmd) Result ¶

func (cmd *StringIntMapCmd) Result() (map[string]int64, error)

func (*StringIntMapCmd) String ¶

func (cmd *StringIntMapCmd) String() string

func (*StringIntMapCmd) Val ¶

func (cmd *StringIntMapCmd) Val() map[string]int64

type StringSliceCmd ¶

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

func NewStringSliceCmd ¶

func NewStringSliceCmd(args ...interface{}) *StringSliceCmd

func NewStringSliceResult ¶

func NewStringSliceResult(val []string, err error) *StringSliceCmd

NewStringSliceResult returns a StringSliceCmd initalised with val and err for testing

func (*StringSliceCmd) Err ¶

func (cmd *StringSliceCmd) Err() error

func (*StringSliceCmd) Result ¶

func (cmd *StringSliceCmd) Result() ([]string, error)

func (*StringSliceCmd) String ¶

func (cmd *StringSliceCmd) String() string

func (*StringSliceCmd) Val ¶

func (cmd *StringSliceCmd) Val() []string

type StringStringMapCmd ¶

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

func NewStringStringMapCmd ¶

func NewStringStringMapCmd(args ...interface{}) *StringStringMapCmd

func NewStringStringMapResult ¶

func NewStringStringMapResult(val map[string]string, err error) *StringStringMapCmd

NewStringStringMapResult returns a StringStringMapCmd initalised with val and err for testing

func (*StringStringMapCmd) Err ¶

func (cmd *StringStringMapCmd) Err() error

func (*StringStringMapCmd) Result ¶

func (cmd *StringStringMapCmd) Result() (map[string]string, error)

func (*StringStringMapCmd) String ¶

func (cmd *StringStringMapCmd) String() string

func (*StringStringMapCmd) Val ¶

func (cmd *StringStringMapCmd) Val() map[string]string

type Subscription ¶

type Subscription struct {
	// Can be "subscribe", "unsubscribe", "psubscribe" or "punsubscribe".
	Kind string
	// Channel name we have subscribed to.
	Channel string
	// Number of channels we are currently subscribed to.
	Count int
}

Message received after a successful subscription to channel.

func (*Subscription) String ¶

func (m *Subscription) String() string

type Tx ¶

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

Tx implements Redis transactions as described in http://redis.io/topics/transactions. It's NOT safe for concurrent use by multiple goroutines, because Exec resets list of watched keys. If you don't need WATCH it is better to use Pipeline.

func (*Tx) Append ¶

func (c *Tx) Append(key, value string) *IntCmd

func (*Tx) Auth ¶

func (c *Tx) Auth(password string) *StatusCmd

func (*Tx) BLPop ¶

func (c *Tx) BLPop(timeout time.Duration, keys ...string) *StringSliceCmd

func (*Tx) BRPop ¶

func (c *Tx) BRPop(timeout time.Duration, keys ...string) *StringSliceCmd

func (*Tx) BRPopLPush ¶

func (c *Tx) BRPopLPush(source, destination string, timeout time.Duration) *StringCmd

func (*Tx) BgRewriteAOF ¶

func (c *Tx) BgRewriteAOF() *StatusCmd

func (*Tx) BgSave ¶

func (c *Tx) BgSave() *StatusCmd

func (*Tx) BitCount ¶

func (c *Tx) BitCount(key string, bitCount *BitCount) *IntCmd

func (*Tx) BitOpAnd ¶

func (c *Tx) BitOpAnd(destKey string, keys ...string) *IntCmd

func (*Tx) BitOpNot ¶

func (c *Tx) BitOpNot(destKey string, key string) *IntCmd

func (*Tx) BitOpOr ¶

func (c *Tx) BitOpOr(destKey string, keys ...string) *IntCmd

func (*Tx) BitOpXor ¶

func (c *Tx) BitOpXor(destKey string, keys ...string) *IntCmd

func (*Tx) BitPos ¶

func (c *Tx) BitPos(key string, bit int64, pos ...int64) *IntCmd

func (*Tx) ClientKill ¶

func (c *Tx) ClientKill(ipPort string) *StatusCmd

func (*Tx) ClientList ¶

func (c *Tx) ClientList() *StringCmd

func (*Tx) ClientPause ¶

func (c *Tx) ClientPause(dur time.Duration) *BoolCmd

func (*Tx) ClientSetName ¶

func (c *Tx) ClientSetName(name string) *BoolCmd

ClientSetName assigns a name to the one of many connections in the pool.

func (*Tx) Close ¶

func (c *Tx) Close() error

Close closes the client, releasing any open resources.

It is rare to Close a Client, as the Client is meant to be long-lived and shared between many goroutines.

func (*Tx) ClusterAddSlots ¶

func (c *Tx) ClusterAddSlots(slots ...int) *StatusCmd

func (*Tx) ClusterAddSlotsRange ¶

func (c *Tx) ClusterAddSlotsRange(min, max int) *StatusCmd

func (*Tx) ClusterCountFailureReports ¶

func (c *Tx) ClusterCountFailureReports(nodeID string) *IntCmd

func (*Tx) ClusterCountKeysInSlot ¶

func (c *Tx) ClusterCountKeysInSlot(slot int) *IntCmd

func (*Tx) ClusterDelSlots ¶

func (c *Tx) ClusterDelSlots(slots ...int) *StatusCmd

func (*Tx) ClusterDelSlotsRange ¶

func (c *Tx) ClusterDelSlotsRange(min, max int) *StatusCmd

func (*Tx) ClusterFailover ¶

func (c *Tx) ClusterFailover() *StatusCmd

func (*Tx) ClusterForget ¶

func (c *Tx) ClusterForget(nodeID string) *StatusCmd

func (*Tx) ClusterInfo ¶

func (c *Tx) ClusterInfo() *StringCmd

func (*Tx) ClusterKeySlot ¶

func (c *Tx) ClusterKeySlot(key string) *IntCmd

func (*Tx) ClusterMeet ¶

func (c *Tx) ClusterMeet(host, port string) *StatusCmd

func (*Tx) ClusterNodes ¶

func (c *Tx) ClusterNodes() *StringCmd

func (*Tx) ClusterReplicate ¶

func (c *Tx) ClusterReplicate(nodeID string) *StatusCmd

func (*Tx) ClusterResetHard ¶

func (c *Tx) ClusterResetHard() *StatusCmd

func (*Tx) ClusterResetSoft ¶

func (c *Tx) ClusterResetSoft() *StatusCmd

func (*Tx) ClusterSaveConfig ¶

func (c *Tx) ClusterSaveConfig() *StatusCmd

func (*Tx) ClusterSlaves ¶

func (c *Tx) ClusterSlaves(nodeID string) *StringSliceCmd

func (*Tx) ClusterSlots ¶

func (c *Tx) ClusterSlots() *ClusterSlotsCmd

func (*Tx) Command ¶

func (c *Tx) Command() *CommandsInfoCmd

func (*Tx) ConfigGet ¶

func (c *Tx) ConfigGet(parameter string) *SliceCmd

func (*Tx) ConfigResetStat ¶

func (c *Tx) ConfigResetStat() *StatusCmd

func (*Tx) ConfigSet ¶

func (c *Tx) ConfigSet(parameter, value string) *StatusCmd

func (*Tx) DbSize ¶

func (c *Tx) DbSize() *IntCmd

func (*Tx) DebugObject ¶

func (c *Tx) DebugObject(key string) *StringCmd

func (*Tx) Decr ¶

func (c *Tx) Decr(key string) *IntCmd

func (*Tx) DecrBy ¶

func (c *Tx) DecrBy(key string, decrement int64) *IntCmd

func (*Tx) Del ¶

func (c *Tx) Del(keys ...string) *IntCmd

func (*Tx) Discard ¶

func (c *Tx) Discard() error

Discard discards queued commands.

func (*Tx) Dump ¶

func (c *Tx) Dump(key string) *StringCmd

func (*Tx) Echo ¶

func (c *Tx) Echo(message interface{}) *StringCmd

func (*Tx) Eval ¶

func (c *Tx) Eval(script string, keys []string, args ...interface{}) *Cmd

func (*Tx) EvalSha ¶

func (c *Tx) EvalSha(sha1 string, keys []string, args ...interface{}) *Cmd

func (*Tx) Exists ¶

func (c *Tx) Exists(key string) *BoolCmd

func (*Tx) Expire ¶

func (c *Tx) Expire(key string, expiration time.Duration) *BoolCmd

func (*Tx) ExpireAt ¶

func (c *Tx) ExpireAt(key string, tm time.Time) *BoolCmd

func (*Tx) FlushAll ¶

func (c *Tx) FlushAll() *StatusCmd

func (*Tx) FlushDb ¶

func (c *Tx) FlushDb() *StatusCmd

func (*Tx) GeoAdd ¶

func (c *Tx) GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd

func (*Tx) GeoDist ¶

func (c *Tx) GeoDist(key string, member1, member2, unit string) *FloatCmd

func (*Tx) GeoHash ¶

func (c *Tx) GeoHash(key string, members ...string) *StringSliceCmd

func (*Tx) GeoPos ¶

func (c *Tx) GeoPos(key string, members ...string) *GeoPosCmd

func (*Tx) GeoRadius ¶

func (c *Tx) GeoRadius(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd

func (*Tx) GeoRadiusByMember ¶

func (c *Tx) GeoRadiusByMember(key, member string, query *GeoRadiusQuery) *GeoLocationCmd

func (*Tx) Get ¶

func (c *Tx) Get(key string) *StringCmd

func (*Tx) GetBit ¶

func (c *Tx) GetBit(key string, offset int64) *IntCmd

func (*Tx) GetRange ¶

func (c *Tx) GetRange(key string, start, end int64) *StringCmd

func (*Tx) GetSet ¶

func (c *Tx) GetSet(key string, value interface{}) *StringCmd

func (*Tx) HDel ¶

func (c *Tx) HDel(key string, fields ...string) *IntCmd

func (*Tx) HExists ¶

func (c *Tx) HExists(key, field string) *BoolCmd

func (*Tx) HGet ¶

func (c *Tx) HGet(key, field string) *StringCmd

func (*Tx) HGetAll ¶

func (c *Tx) HGetAll(key string) *StringStringMapCmd

func (*Tx) HIncrBy ¶

func (c *Tx) HIncrBy(key, field string, incr int64) *IntCmd

func (*Tx) HIncrByFloat ¶

func (c *Tx) HIncrByFloat(key, field string, incr float64) *FloatCmd

func (*Tx) HKeys ¶

func (c *Tx) HKeys(key string) *StringSliceCmd

func (*Tx) HLen ¶

func (c *Tx) HLen(key string) *IntCmd

func (*Tx) HMGet ¶

func (c *Tx) HMGet(key string, fields ...string) *SliceCmd

func (*Tx) HMSet ¶

func (c *Tx) HMSet(key string, fields map[string]string) *StatusCmd

func (*Tx) HScan ¶

func (c *Tx) HScan(key string, cursor uint64, match string, count int64) Scanner

func (*Tx) HSet ¶

func (c *Tx) HSet(key, field, value string) *BoolCmd

func (*Tx) HSetNX ¶

func (c *Tx) HSetNX(key, field, value string) *BoolCmd

func (*Tx) HVals ¶

func (c *Tx) HVals(key string) *StringSliceCmd

func (*Tx) Incr ¶

func (c *Tx) Incr(key string) *IntCmd

func (*Tx) IncrBy ¶

func (c *Tx) IncrBy(key string, value int64) *IntCmd

func (*Tx) IncrByFloat ¶

func (c *Tx) IncrByFloat(key string, value float64) *FloatCmd

func (*Tx) Info ¶

func (c *Tx) Info(section ...string) *StringCmd

func (*Tx) Keys ¶

func (c *Tx) Keys(pattern string) *StringSliceCmd

func (*Tx) LIndex ¶

func (c *Tx) LIndex(key string, index int64) *StringCmd

func (*Tx) LInsert ¶

func (c *Tx) LInsert(key, op string, pivot, value interface{}) *IntCmd

func (*Tx) LInsertAfter ¶

func (c *Tx) LInsertAfter(key string, pivot, value interface{}) *IntCmd

func (*Tx) LInsertBefore ¶

func (c *Tx) LInsertBefore(key string, pivot, value interface{}) *IntCmd

func (*Tx) LLen ¶

func (c *Tx) LLen(key string) *IntCmd

func (*Tx) LPop ¶

func (c *Tx) LPop(key string) *StringCmd

func (*Tx) LPush ¶

func (c *Tx) LPush(key string, values ...interface{}) *IntCmd

func (*Tx) LPushX ¶

func (c *Tx) LPushX(key string, value interface{}) *IntCmd

func (*Tx) LRange ¶

func (c *Tx) LRange(key string, start, stop int64) *StringSliceCmd

func (*Tx) LRem ¶

func (c *Tx) LRem(key string, count int64, value interface{}) *IntCmd

func (*Tx) LSet ¶

func (c *Tx) LSet(key string, index int64, value interface{}) *StatusCmd

func (*Tx) LTrim ¶

func (c *Tx) LTrim(key string, start, stop int64) *StatusCmd

func (*Tx) LastSave ¶

func (c *Tx) LastSave() *IntCmd

func (*Tx) MGet ¶

func (c *Tx) MGet(keys ...string) *SliceCmd

func (*Tx) MSet ¶

func (c *Tx) MSet(pairs ...interface{}) *StatusCmd

func (*Tx) MSetNX ¶

func (c *Tx) MSetNX(pairs ...interface{}) *BoolCmd

func (*Tx) Migrate ¶

func (c *Tx) Migrate(host, port, key string, db int64, timeout time.Duration) *StatusCmd

func (*Tx) Move ¶

func (c *Tx) Move(key string, db int64) *BoolCmd

func (*Tx) MultiExec ¶

func (c *Tx) MultiExec(fn func() error) ([]Cmder, error)

MultiExec executes all previously queued commands in a transaction and restores the connection state to normal.

When using WATCH, EXEC will execute commands only if the watched keys were not modified, allowing for a check-and-set mechanism.

Exec always returns list of commands. If transaction fails TxFailedErr is returned. Otherwise Exec returns error of the first failed command or nil.

func (*Tx) ObjectEncoding ¶

func (c *Tx) ObjectEncoding(keys ...string) *StringCmd

func (*Tx) ObjectIdleTime ¶

func (c *Tx) ObjectIdleTime(keys ...string) *DurationCmd

func (*Tx) ObjectRefCount ¶

func (c *Tx) ObjectRefCount(keys ...string) *IntCmd

func (*Tx) PExpire ¶

func (c *Tx) PExpire(key string, expiration time.Duration) *BoolCmd

func (*Tx) PExpireAt ¶

func (c *Tx) PExpireAt(key string, tm time.Time) *BoolCmd

func (*Tx) PFAdd ¶

func (c *Tx) PFAdd(key string, els ...interface{}) *IntCmd

func (*Tx) PFCount ¶

func (c *Tx) PFCount(keys ...string) *IntCmd

func (*Tx) PFMerge ¶

func (c *Tx) PFMerge(dest string, keys ...string) *StatusCmd

func (*Tx) PTTL ¶

func (c *Tx) PTTL(key string) *DurationCmd

func (*Tx) Persist ¶

func (c *Tx) Persist(key string) *BoolCmd

func (*Tx) Ping ¶

func (c *Tx) Ping() *StatusCmd

func (*Tx) Process ¶

func (c *Tx) Process(cmd Cmder) error

func (*Tx) PubSubChannels ¶

func (c *Tx) PubSubChannels(pattern string) *StringSliceCmd

func (*Tx) PubSubNumPat ¶

func (c *Tx) PubSubNumPat() *IntCmd

func (*Tx) PubSubNumSub ¶

func (c *Tx) PubSubNumSub(channels ...string) *StringIntMapCmd

func (*Tx) Publish ¶

func (c *Tx) Publish(channel, message string) *IntCmd

Publish posts the message to the channel.

func (*Tx) Quit ¶

func (c *Tx) Quit() *StatusCmd

func (*Tx) RPop ¶

func (c *Tx) RPop(key string) *StringCmd

func (*Tx) RPopLPush ¶

func (c *Tx) RPopLPush(source, destination string) *StringCmd

func (*Tx) RPush ¶

func (c *Tx) RPush(key string, values ...interface{}) *IntCmd

func (*Tx) RPushX ¶

func (c *Tx) RPushX(key string, value interface{}) *IntCmd

func (*Tx) RandomKey ¶

func (c *Tx) RandomKey() *StringCmd

func (*Tx) ReadOnly ¶

func (c *Tx) ReadOnly() *StatusCmd

func (*Tx) ReadWrite ¶

func (c *Tx) ReadWrite() *StatusCmd

func (*Tx) Rename ¶

func (c *Tx) Rename(key, newkey string) *StatusCmd

func (*Tx) RenameNX ¶

func (c *Tx) RenameNX(key, newkey string) *BoolCmd

func (*Tx) Restore ¶

func (c *Tx) Restore(key string, ttl time.Duration, value string) *StatusCmd

func (*Tx) RestoreReplace ¶

func (c *Tx) RestoreReplace(key string, ttl time.Duration, value string) *StatusCmd

func (*Tx) SAdd ¶

func (c *Tx) SAdd(key string, members ...interface{}) *IntCmd

func (*Tx) SCard ¶

func (c *Tx) SCard(key string) *IntCmd

func (*Tx) SDiff ¶

func (c *Tx) SDiff(keys ...string) *StringSliceCmd

func (*Tx) SDiffStore ¶

func (c *Tx) SDiffStore(destination string, keys ...string) *IntCmd

func (*Tx) SInter ¶

func (c *Tx) SInter(keys ...string) *StringSliceCmd

func (*Tx) SInterStore ¶

func (c *Tx) SInterStore(destination string, keys ...string) *IntCmd

func (*Tx) SIsMember ¶

func (c *Tx) SIsMember(key string, member interface{}) *BoolCmd

func (*Tx) SMembers ¶

func (c *Tx) SMembers(key string) *StringSliceCmd

func (*Tx) SMove ¶

func (c *Tx) SMove(source, destination string, member interface{}) *BoolCmd

func (*Tx) SPop ¶

func (c *Tx) SPop(key string) *StringCmd

Redis `SPOP key` command.

func (*Tx) SPopN ¶

func (c *Tx) SPopN(key string, count int64) *StringSliceCmd

Redis `SPOP key count` command.

func (*Tx) SRandMember ¶

func (c *Tx) SRandMember(key string) *StringCmd

Redis `SRANDMEMBER key` command.

func (*Tx) SRandMemberN ¶

func (c *Tx) SRandMemberN(key string, count int64) *StringSliceCmd

Redis `SRANDMEMBER key count` command.

func (*Tx) SRem ¶

func (c *Tx) SRem(key string, members ...interface{}) *IntCmd

func (*Tx) SScan ¶

func (c *Tx) SScan(key string, cursor uint64, match string, count int64) Scanner

func (*Tx) SUnion ¶

func (c *Tx) SUnion(keys ...string) *StringSliceCmd

func (*Tx) SUnionStore ¶

func (c *Tx) SUnionStore(destination string, keys ...string) *IntCmd

func (*Tx) Save ¶

func (c *Tx) Save() *StatusCmd

func (*Tx) Scan ¶

func (c *Tx) Scan(cursor uint64, match string, count int64) Scanner

func (*Tx) ScriptExists ¶

func (c *Tx) ScriptExists(scripts ...string) *BoolSliceCmd

func (*Tx) ScriptFlush ¶

func (c *Tx) ScriptFlush() *StatusCmd

func (*Tx) ScriptKill ¶

func (c *Tx) ScriptKill() *StatusCmd

func (*Tx) ScriptLoad ¶

func (c *Tx) ScriptLoad(script string) *StringCmd

func (*Tx) Select ¶

func (c *Tx) Select(index int) *StatusCmd

func (*Tx) Set ¶

func (c *Tx) Set(key string, value interface{}, expiration time.Duration) *StatusCmd

Redis `SET key value [expiration]` command.

Zero expiration means the key has no expiration time.

func (*Tx) SetBit ¶

func (c *Tx) SetBit(key string, offset int64, value int) *IntCmd

func (*Tx) SetNX ¶

func (c *Tx) SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd

Redis `SET key value [expiration] NX` command.

Zero expiration means the key has no expiration time.

func (*Tx) SetRange ¶

func (c *Tx) SetRange(key string, offset int64, value string) *IntCmd

func (*Tx) SetXX ¶

func (c *Tx) SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd

Redis `SET key value [expiration] XX` command.

Zero expiration means the key has no expiration time.

func (*Tx) Shutdown ¶

func (c *Tx) Shutdown() *StatusCmd

func (*Tx) ShutdownNoSave ¶

func (c *Tx) ShutdownNoSave() *StatusCmd

func (*Tx) ShutdownSave ¶

func (c *Tx) ShutdownSave() *StatusCmd

func (*Tx) SlaveOf ¶

func (c *Tx) SlaveOf(host, port string) *StatusCmd

func (*Tx) SlowLog ¶

func (c *Tx) SlowLog()

func (*Tx) Sort ¶

func (c *Tx) Sort(key string, sort Sort) *StringSliceCmd

func (*Tx) SortInterfaces ¶

func (c *Tx) SortInterfaces(key string, sort Sort) *SliceCmd

func (*Tx) StrLen ¶

func (c *Tx) StrLen(key string) *IntCmd

func (*Tx) String ¶

func (c *Tx) String() string

func (*Tx) Sync ¶

func (c *Tx) Sync()

func (*Tx) TTL ¶

func (c *Tx) TTL(key string) *DurationCmd

func (*Tx) Time ¶

func (c *Tx) Time() *StringSliceCmd

TODO: add TimeCmd and use it here

func (*Tx) Type ¶

func (c *Tx) Type(key string) *StatusCmd

func (*Tx) Unwatch ¶

func (c *Tx) Unwatch(keys ...string) *StatusCmd

Unwatch flushes all the previously watched keys for a transaction.

func (*Tx) Watch ¶

func (c *Tx) Watch(keys ...string) *StatusCmd

Watch marks the keys to be watched for conditional execution of a transaction.

func (*Tx) WrapProcess ¶

func (c *Tx) WrapProcess(createWrapper func(oldProcess func(cmd Cmder) error) func(cmd Cmder) error)

WrapProcess replaces the process func. It takes a function createWrapper which is supplied by the user. createWrapper takes the old process func as an input and returns the new wrapper process func. createWrapper should use call the old process func within the new process func.

func (*Tx) ZAdd ¶

func (c *Tx) ZAdd(key string, members ...Z) *IntCmd

Redis `ZADD key score member [score member ...]` command.

func (*Tx) ZAddCh ¶

func (c *Tx) ZAddCh(key string, members ...Z) *IntCmd

Redis `ZADD key CH score member [score member ...]` command.

func (*Tx) ZAddNX ¶

func (c *Tx) ZAddNX(key string, members ...Z) *IntCmd

Redis `ZADD key NX score member [score member ...]` command.

func (*Tx) ZAddNXCh ¶

func (c *Tx) ZAddNXCh(key string, members ...Z) *IntCmd

Redis `ZADD key NX CH score member [score member ...]` command.

func (*Tx) ZAddXX ¶

func (c *Tx) ZAddXX(key string, members ...Z) *IntCmd

Redis `ZADD key XX score member [score member ...]` command.

func (*Tx) ZAddXXCh ¶

func (c *Tx) ZAddXXCh(key string, members ...Z) *IntCmd

Redis `ZADD key XX CH score member [score member ...]` command.

func (*Tx) ZCard ¶

func (c *Tx) ZCard(key string) *IntCmd

func (*Tx) ZCount ¶

func (c *Tx) ZCount(key, min, max string) *IntCmd

func (*Tx) ZIncr ¶

func (c *Tx) ZIncr(key string, member Z) *FloatCmd

Redis `ZADD key INCR score member` command.

func (*Tx) ZIncrBy ¶

func (c *Tx) ZIncrBy(key string, increment float64, member string) *FloatCmd

func (*Tx) ZIncrNX ¶

func (c *Tx) ZIncrNX(key string, member Z) *FloatCmd

Redis `ZADD key NX INCR score member` command.

func (*Tx) ZIncrXX ¶

func (c *Tx) ZIncrXX(key string, member Z) *FloatCmd

Redis `ZADD key XX INCR score member` command.

func (*Tx) ZInterStore ¶

func (c *Tx) ZInterStore(destination string, store ZStore, keys ...string) *IntCmd

func (*Tx) ZRange ¶

func (c *Tx) ZRange(key string, start, stop int64) *StringSliceCmd

func (*Tx) ZRangeByLex ¶

func (c *Tx) ZRangeByLex(key string, opt ZRangeBy) *StringSliceCmd

func (*Tx) ZRangeByScore ¶

func (c *Tx) ZRangeByScore(key string, opt ZRangeBy) *StringSliceCmd

func (*Tx) ZRangeByScoreWithScores ¶

func (c *Tx) ZRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd

func (*Tx) ZRangeWithScores ¶

func (c *Tx) ZRangeWithScores(key string, start, stop int64) *ZSliceCmd

func (*Tx) ZRank ¶

func (c *Tx) ZRank(key, member string) *IntCmd

func (*Tx) ZRem ¶

func (c *Tx) ZRem(key string, members ...interface{}) *IntCmd

func (*Tx) ZRemRangeByRank ¶

func (c *Tx) ZRemRangeByRank(key string, start, stop int64) *IntCmd

func (*Tx) ZRemRangeByScore ¶

func (c *Tx) ZRemRangeByScore(key, min, max string) *IntCmd

func (*Tx) ZRevRange ¶

func (c *Tx) ZRevRange(key string, start, stop int64) *StringSliceCmd

func (*Tx) ZRevRangeByLex ¶

func (c *Tx) ZRevRangeByLex(key string, opt ZRangeBy) *StringSliceCmd

func (*Tx) ZRevRangeByScore ¶

func (c *Tx) ZRevRangeByScore(key string, opt ZRangeBy) *StringSliceCmd

func (*Tx) ZRevRangeByScoreWithScores ¶

func (c *Tx) ZRevRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd

func (*Tx) ZRevRangeWithScores ¶

func (c *Tx) ZRevRangeWithScores(key string, start, stop int64) *ZSliceCmd

func (*Tx) ZRevRank ¶

func (c *Tx) ZRevRank(key, member string) *IntCmd

func (*Tx) ZScan ¶

func (c *Tx) ZScan(key string, cursor uint64, match string, count int64) Scanner

func (*Tx) ZScore ¶

func (c *Tx) ZScore(key, member string) *FloatCmd

func (*Tx) ZUnionStore ¶

func (c *Tx) ZUnionStore(dest string, store ZStore, keys ...string) *IntCmd

type Z ¶

type Z struct {
	Score  float64
	Member interface{}
}

Z represents sorted set member.

type ZRangeBy ¶

type ZRangeBy struct {
	Min, Max      string
	Offset, Count int64
}

type ZSliceCmd ¶

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

func NewZSliceCmd ¶

func NewZSliceCmd(args ...interface{}) *ZSliceCmd

func NewZSliceCmdResult ¶

func NewZSliceCmdResult(val []Z, err error) *ZSliceCmd

NewZSliceCmdResult returns a ZSliceCmd initalised with val and err for testing

func (*ZSliceCmd) Err ¶

func (cmd *ZSliceCmd) Err() error

func (*ZSliceCmd) Result ¶

func (cmd *ZSliceCmd) Result() ([]Z, error)

func (*ZSliceCmd) String ¶

func (cmd *ZSliceCmd) String() string

func (*ZSliceCmd) Val ¶

func (cmd *ZSliceCmd) Val() []Z

type ZStore ¶

type ZStore struct {
	Weights []float64
	// Can be SUM, MIN or MAX.
	Aggregate string
}

ZStore is used as an arg to ZInterStore and ZUnionStore.

Directories ¶

Path Synopsis
consistenthash
Package consistenthash provides an implementation of a ring hash.
Package consistenthash provides an implementation of a ring hash.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL