Documentation ¶
Overview ¶
Package redis implements a Redis client.
Example (CustomCommand) ¶
package main import ( "fmt" "github.com/go-redis/redis" ) var client *redis.Client func main() { 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
Example (Instrumentation) ¶
package main import ( "fmt" "sync/atomic" "time" "github.com/go-redis/redis" ) func main() { ring := redis.NewRing(&redis.RingOptions{ Addrs: map[string]string{ "shard1": ":6379", }, }) ring.ForEachShard(func(client *redis.Client) error { wrapRedisProcess(client) return nil }) for { ring.Ping() } } func wrapRedisProcess(client *redis.Client) { const precision = time.Microsecond var count, avgDur uint32 go func() { for range time.Tick(3 * time.Second) { n := atomic.LoadUint32(&count) dur := time.Duration(atomic.LoadUint32(&avgDur)) * precision fmt.Printf("%s: processed=%d avg_dur=%s\n", client, n, dur) } }() client.WrapProcess(func(oldProcess func(redis.Cmder) error) func(redis.Cmder) error { return func(cmd redis.Cmder) error { start := time.Now() err := oldProcess(cmd) dur := time.Since(start) const decay = float64(1) / 100 ms := float64(dur / precision) for { avg := atomic.LoadUint32(&avgDur) newAvg := uint32((1-decay)*float64(avg) + decay*ms) if atomic.CompareAndSwapUint32(&avgDur, avg, newAvg) { break } } atomic.AddUint32(&count, 1) return err } }) }
Output:
Index ¶
- Constants
- func SetLogger(logger *log.Logger)
- type BitCount
- type BoolCmd
- type BoolSliceCmd
- type Client
- func (c *Client) Append(key, value string) *IntCmd
- func (c *Client) BLPop(timeout time.Duration, keys ...string) *StringSliceCmd
- func (c *Client) BRPop(timeout time.Duration, keys ...string) *StringSliceCmd
- func (c *Client) BRPopLPush(source, destination string, timeout time.Duration) *StringCmd
- func (c *Client) BgRewriteAOF() *StatusCmd
- func (c *Client) BgSave() *StatusCmd
- func (c *Client) BitCount(key string, bitCount *BitCount) *IntCmd
- func (c *Client) BitOpAnd(destKey string, keys ...string) *IntCmd
- func (c *Client) BitOpNot(destKey string, key string) *IntCmd
- func (c *Client) BitOpOr(destKey string, keys ...string) *IntCmd
- func (c *Client) BitOpXor(destKey string, keys ...string) *IntCmd
- func (c *Client) BitPos(key string, bit int64, pos ...int64) *IntCmd
- func (c *Client) ClientGetName() *StringCmd
- func (c *Client) ClientKill(ipPort string) *StatusCmd
- func (c *Client) ClientList() *StringCmd
- func (c *Client) ClientPause(dur time.Duration) *BoolCmd
- func (c *Client) Close() error
- func (c *Client) ClusterAddSlots(slots ...int) *StatusCmd
- func (c *Client) ClusterAddSlotsRange(min, max int) *StatusCmd
- func (c *Client) ClusterCountFailureReports(nodeID string) *IntCmd
- func (c *Client) ClusterCountKeysInSlot(slot int) *IntCmd
- func (c *Client) ClusterDelSlots(slots ...int) *StatusCmd
- func (c *Client) ClusterDelSlotsRange(min, max int) *StatusCmd
- func (c *Client) ClusterFailover() *StatusCmd
- func (c *Client) ClusterForget(nodeID string) *StatusCmd
- func (c *Client) ClusterInfo() *StringCmd
- func (c *Client) ClusterKeySlot(key string) *IntCmd
- func (c *Client) ClusterMeet(host, port string) *StatusCmd
- func (c *Client) ClusterNodes() *StringCmd
- func (c *Client) ClusterReplicate(nodeID string) *StatusCmd
- func (c *Client) ClusterResetHard() *StatusCmd
- func (c *Client) ClusterResetSoft() *StatusCmd
- func (c *Client) ClusterSaveConfig() *StatusCmd
- func (c *Client) ClusterSlaves(nodeID string) *StringSliceCmd
- func (c *Client) ClusterSlots() *ClusterSlotsCmd
- func (c *Client) Command() *CommandsInfoCmd
- func (c *Client) ConfigGet(parameter string) *SliceCmd
- func (c *Client) ConfigResetStat() *StatusCmd
- func (c *Client) ConfigSet(parameter, value string) *StatusCmd
- func (c *Client) Context() context.Context
- func (c *Client) DBSize() *IntCmd
- func (c *Client) DbSize() *IntCmd
- func (c *Client) DebugObject(key string) *StringCmd
- func (c *Client) Decr(key string) *IntCmd
- func (c *Client) DecrBy(key string, decrement int64) *IntCmd
- func (c *Client) Del(keys ...string) *IntCmd
- func (c *Client) Dump(key string) *StringCmd
- func (c *Client) Echo(message interface{}) *StringCmd
- func (c *Client) Eval(script string, keys []string, args ...interface{}) *Cmd
- func (c *Client) EvalSha(sha1 string, keys []string, args ...interface{}) *Cmd
- func (c *Client) Exists(keys ...string) *IntCmd
- func (c *Client) Expire(key string, expiration time.Duration) *BoolCmd
- func (c *Client) ExpireAt(key string, tm time.Time) *BoolCmd
- func (c *Client) FlushAll() *StatusCmd
- func (c *Client) FlushAllAsync() *StatusCmd
- func (c *Client) FlushDB() *StatusCmd
- func (c *Client) FlushDBAsync() *StatusCmd
- func (c *Client) FlushDb() *StatusCmd
- func (c *Client) GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd
- func (c *Client) GeoDist(key string, member1, member2, unit string) *FloatCmd
- func (c *Client) GeoHash(key string, members ...string) *StringSliceCmd
- func (c *Client) GeoPos(key string, members ...string) *GeoPosCmd
- func (c *Client) GeoRadius(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *Client) GeoRadiusByMember(key, member string, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *Client) GeoRadiusByMemberRO(key, member string, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *Client) GeoRadiusRO(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *Client) Get(key string) *StringCmd
- func (c *Client) GetBit(key string, offset int64) *IntCmd
- func (c *Client) GetRange(key string, start, end int64) *StringCmd
- func (c *Client) GetSet(key string, value interface{}) *StringCmd
- func (c *Client) HDel(key string, fields ...string) *IntCmd
- func (c *Client) HExists(key, field string) *BoolCmd
- func (c *Client) HGet(key, field string) *StringCmd
- func (c *Client) HGetAll(key string) *StringStringMapCmd
- func (c *Client) HIncrBy(key, field string, incr int64) *IntCmd
- func (c *Client) HIncrByFloat(key, field string, incr float64) *FloatCmd
- func (c *Client) HKeys(key string) *StringSliceCmd
- func (c *Client) HLen(key string) *IntCmd
- func (c *Client) HMGet(key string, fields ...string) *SliceCmd
- func (c *Client) HMSet(key string, fields map[string]interface{}) *StatusCmd
- func (c *Client) HScan(key string, cursor uint64, match string, count int64) *ScanCmd
- func (c *Client) HSet(key, field string, value interface{}) *BoolCmd
- func (c *Client) HSetNX(key, field string, value interface{}) *BoolCmd
- func (c *Client) HVals(key string) *StringSliceCmd
- func (c *Client) Incr(key string) *IntCmd
- func (c *Client) IncrBy(key string, value int64) *IntCmd
- func (c *Client) IncrByFloat(key string, value float64) *FloatCmd
- func (c *Client) Info(section ...string) *StringCmd
- func (c *Client) Keys(pattern string) *StringSliceCmd
- func (c *Client) LIndex(key string, index int64) *StringCmd
- func (c *Client) LInsert(key, op string, pivot, value interface{}) *IntCmd
- func (c *Client) LInsertAfter(key string, pivot, value interface{}) *IntCmd
- func (c *Client) LInsertBefore(key string, pivot, value interface{}) *IntCmd
- func (c *Client) LLen(key string) *IntCmd
- func (c *Client) LPop(key string) *StringCmd
- func (c *Client) LPush(key string, values ...interface{}) *IntCmd
- func (c *Client) LPushX(key string, value interface{}) *IntCmd
- func (c *Client) LRange(key string, start, stop int64) *StringSliceCmd
- func (c *Client) LRem(key string, count int64, value interface{}) *IntCmd
- func (c *Client) LSet(key string, index int64, value interface{}) *StatusCmd
- func (c *Client) LTrim(key string, start, stop int64) *StatusCmd
- func (c *Client) LastSave() *IntCmd
- func (c *Client) MGet(keys ...string) *SliceCmd
- func (c *Client) MSet(pairs ...interface{}) *StatusCmd
- func (c *Client) MSetNX(pairs ...interface{}) *BoolCmd
- func (c *Client) Migrate(host, port, key string, db int64, timeout time.Duration) *StatusCmd
- func (c *Client) Move(key string, db int64) *BoolCmd
- func (c *Client) ObjectEncoding(key string) *StringCmd
- func (c *Client) ObjectIdleTime(key string) *DurationCmd
- func (c *Client) ObjectRefCount(key string) *IntCmd
- func (c *Client) Options() *Options
- func (c *Client) PExpire(key string, expiration time.Duration) *BoolCmd
- func (c *Client) PExpireAt(key string, tm time.Time) *BoolCmd
- func (c *Client) PFAdd(key string, els ...interface{}) *IntCmd
- func (c *Client) PFCount(keys ...string) *IntCmd
- func (c *Client) PFMerge(dest string, keys ...string) *StatusCmd
- func (c *Client) PSubscribe(channels ...string) *PubSub
- func (c *Client) PTTL(key string) *DurationCmd
- func (c *Client) Persist(key string) *BoolCmd
- func (c *Client) Ping() *StatusCmd
- func (c *Client) Pipeline() Pipeliner
- func (c *Client) Pipelined(fn func(Pipeliner) error) ([]Cmder, error)
- func (c *Client) PoolStats() *PoolStats
- func (c *Client) Process(cmd Cmder) error
- func (c *Client) PubSubChannels(pattern string) *StringSliceCmd
- func (c *Client) PubSubNumPat() *IntCmd
- func (c *Client) PubSubNumSub(channels ...string) *StringIntMapCmd
- func (c *Client) Publish(channel string, message interface{}) *IntCmd
- func (c *Client) Quit() *StatusCmd
- func (c *Client) RPop(key string) *StringCmd
- func (c *Client) RPopLPush(source, destination string) *StringCmd
- func (c *Client) RPush(key string, values ...interface{}) *IntCmd
- func (c *Client) RPushX(key string, value interface{}) *IntCmd
- func (c *Client) RandomKey() *StringCmd
- func (c *Client) Rename(key, newkey string) *StatusCmd
- func (c *Client) RenameNX(key, newkey string) *BoolCmd
- func (c *Client) Restore(key string, ttl time.Duration, value string) *StatusCmd
- func (c *Client) RestoreReplace(key string, ttl time.Duration, value string) *StatusCmd
- func (c *Client) SAdd(key string, members ...interface{}) *IntCmd
- func (c *Client) SCard(key string) *IntCmd
- func (c *Client) SDiff(keys ...string) *StringSliceCmd
- func (c *Client) SDiffStore(destination string, keys ...string) *IntCmd
- func (c *Client) SInter(keys ...string) *StringSliceCmd
- func (c *Client) SInterStore(destination string, keys ...string) *IntCmd
- func (c *Client) SIsMember(key string, member interface{}) *BoolCmd
- func (c *Client) SMembers(key string) *StringSliceCmd
- func (c *Client) SMembersMap(key string) *StringStructMapCmd
- func (c *Client) SMove(source, destination string, member interface{}) *BoolCmd
- func (c *Client) SPop(key string) *StringCmd
- func (c *Client) SPopN(key string, count int64) *StringSliceCmd
- func (c *Client) SRandMember(key string) *StringCmd
- func (c *Client) SRandMemberN(key string, count int64) *StringSliceCmd
- func (c *Client) SRem(key string, members ...interface{}) *IntCmd
- func (c *Client) SScan(key string, cursor uint64, match string, count int64) *ScanCmd
- func (c *Client) SUnion(keys ...string) *StringSliceCmd
- func (c *Client) SUnionStore(destination string, keys ...string) *IntCmd
- func (c *Client) Save() *StatusCmd
- func (c *Client) Scan(cursor uint64, match string, count int64) *ScanCmd
- func (c *Client) ScriptExists(scripts ...string) *BoolSliceCmd
- func (c *Client) ScriptFlush() *StatusCmd
- func (c *Client) ScriptKill() *StatusCmd
- func (c *Client) ScriptLoad(script string) *StringCmd
- func (c *Client) Set(key string, value interface{}, expiration time.Duration) *StatusCmd
- func (c *Client) SetBit(key string, offset int64, value int) *IntCmd
- func (c *Client) SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd
- func (c *Client) SetRange(key string, offset int64, value string) *IntCmd
- func (c *Client) SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd
- func (c *Client) Shutdown() *StatusCmd
- func (c *Client) ShutdownNoSave() *StatusCmd
- func (c *Client) ShutdownSave() *StatusCmd
- func (c *Client) SlaveOf(host, port string) *StatusCmd
- func (c *Client) SlowLog()
- func (c *Client) Sort(key string, sort Sort) *StringSliceCmd
- func (c *Client) SortInterfaces(key string, sort Sort) *SliceCmd
- func (c *Client) StrLen(key string) *IntCmd
- func (c *Client) String() string
- func (c *Client) Subscribe(channels ...string) *PubSub
- func (c *Client) Sync()
- func (c *Client) TTL(key string) *DurationCmd
- func (c *Client) Time() *TimeCmd
- func (c *Client) TxPipeline() Pipeliner
- func (c *Client) TxPipelined(fn func(Pipeliner) error) ([]Cmder, error)
- func (c *Client) Type(key string) *StatusCmd
- func (c *Client) Unlink(keys ...string) *IntCmd
- func (c *Client) Wait(numSlaves int, timeout time.Duration) *IntCmd
- func (c *Client) Watch(fn func(*Tx) error, keys ...string) error
- func (c *Client) WithContext(ctx context.Context) *Client
- func (c *Client) WrapProcess(fn func(oldProcess func(cmd Cmder) error) func(cmd Cmder) error)
- func (c *Client) ZAdd(key string, members ...Z) *IntCmd
- func (c *Client) ZAddCh(key string, members ...Z) *IntCmd
- func (c *Client) ZAddNX(key string, members ...Z) *IntCmd
- func (c *Client) ZAddNXCh(key string, members ...Z) *IntCmd
- func (c *Client) ZAddXX(key string, members ...Z) *IntCmd
- func (c *Client) ZAddXXCh(key string, members ...Z) *IntCmd
- func (c *Client) ZCard(key string) *IntCmd
- func (c *Client) ZCount(key, min, max string) *IntCmd
- func (c *Client) ZIncr(key string, member Z) *FloatCmd
- func (c *Client) ZIncrBy(key string, increment float64, member string) *FloatCmd
- func (c *Client) ZIncrNX(key string, member Z) *FloatCmd
- func (c *Client) ZIncrXX(key string, member Z) *FloatCmd
- func (c *Client) ZInterStore(destination string, store ZStore, keys ...string) *IntCmd
- func (c *Client) ZLexCount(key, min, max string) *IntCmd
- func (c *Client) ZRange(key string, start, stop int64) *StringSliceCmd
- func (c *Client) ZRangeByLex(key string, opt ZRangeBy) *StringSliceCmd
- func (c *Client) ZRangeByScore(key string, opt ZRangeBy) *StringSliceCmd
- func (c *Client) ZRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd
- func (c *Client) ZRangeWithScores(key string, start, stop int64) *ZSliceCmd
- func (c *Client) ZRank(key, member string) *IntCmd
- func (c *Client) ZRem(key string, members ...interface{}) *IntCmd
- func (c *Client) ZRemRangeByLex(key, min, max string) *IntCmd
- func (c *Client) ZRemRangeByRank(key string, start, stop int64) *IntCmd
- func (c *Client) ZRemRangeByScore(key, min, max string) *IntCmd
- func (c *Client) ZRevRange(key string, start, stop int64) *StringSliceCmd
- func (c *Client) ZRevRangeByLex(key string, opt ZRangeBy) *StringSliceCmd
- func (c *Client) ZRevRangeByScore(key string, opt ZRangeBy) *StringSliceCmd
- func (c *Client) ZRevRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd
- func (c *Client) ZRevRangeWithScores(key string, start, stop int64) *ZSliceCmd
- func (c *Client) ZRevRank(key, member string) *IntCmd
- func (c *Client) ZScan(key string, cursor uint64, match string, count int64) *ScanCmd
- func (c *Client) ZScore(key, member string) *FloatCmd
- func (c *Client) ZUnionStore(dest string, store ZStore, keys ...string) *IntCmd
- type ClusterClient
- func (c *ClusterClient) Append(key, value string) *IntCmd
- func (c *ClusterClient) BLPop(timeout time.Duration, keys ...string) *StringSliceCmd
- func (c *ClusterClient) BRPop(timeout time.Duration, keys ...string) *StringSliceCmd
- func (c *ClusterClient) BRPopLPush(source, destination string, timeout time.Duration) *StringCmd
- func (c *ClusterClient) BgRewriteAOF() *StatusCmd
- func (c *ClusterClient) BgSave() *StatusCmd
- func (c *ClusterClient) BitCount(key string, bitCount *BitCount) *IntCmd
- func (c *ClusterClient) BitOpAnd(destKey string, keys ...string) *IntCmd
- func (c *ClusterClient) BitOpNot(destKey string, key string) *IntCmd
- func (c *ClusterClient) BitOpOr(destKey string, keys ...string) *IntCmd
- func (c *ClusterClient) BitOpXor(destKey string, keys ...string) *IntCmd
- func (c *ClusterClient) BitPos(key string, bit int64, pos ...int64) *IntCmd
- func (c *ClusterClient) ClientGetName() *StringCmd
- func (c *ClusterClient) ClientKill(ipPort string) *StatusCmd
- func (c *ClusterClient) ClientList() *StringCmd
- func (c *ClusterClient) ClientPause(dur time.Duration) *BoolCmd
- func (c *ClusterClient) Close() error
- func (c *ClusterClient) ClusterAddSlots(slots ...int) *StatusCmd
- func (c *ClusterClient) ClusterAddSlotsRange(min, max int) *StatusCmd
- func (c *ClusterClient) ClusterCountFailureReports(nodeID string) *IntCmd
- func (c *ClusterClient) ClusterCountKeysInSlot(slot int) *IntCmd
- func (c *ClusterClient) ClusterDelSlots(slots ...int) *StatusCmd
- func (c *ClusterClient) ClusterDelSlotsRange(min, max int) *StatusCmd
- func (c *ClusterClient) ClusterFailover() *StatusCmd
- func (c *ClusterClient) ClusterForget(nodeID string) *StatusCmd
- func (c *ClusterClient) ClusterInfo() *StringCmd
- func (c *ClusterClient) ClusterKeySlot(key string) *IntCmd
- func (c *ClusterClient) ClusterMeet(host, port string) *StatusCmd
- func (c *ClusterClient) ClusterNodes() *StringCmd
- func (c *ClusterClient) ClusterReplicate(nodeID string) *StatusCmd
- func (c *ClusterClient) ClusterResetHard() *StatusCmd
- func (c *ClusterClient) ClusterResetSoft() *StatusCmd
- func (c *ClusterClient) ClusterSaveConfig() *StatusCmd
- func (c *ClusterClient) ClusterSlaves(nodeID string) *StringSliceCmd
- func (c *ClusterClient) ClusterSlots() *ClusterSlotsCmd
- func (c *ClusterClient) Command() *CommandsInfoCmd
- func (c *ClusterClient) ConfigGet(parameter string) *SliceCmd
- func (c *ClusterClient) ConfigResetStat() *StatusCmd
- func (c *ClusterClient) ConfigSet(parameter, value string) *StatusCmd
- func (c *ClusterClient) DBSize() *IntCmd
- func (c *ClusterClient) DbSize() *IntCmd
- func (c *ClusterClient) DebugObject(key string) *StringCmd
- func (c *ClusterClient) Decr(key string) *IntCmd
- func (c *ClusterClient) DecrBy(key string, decrement int64) *IntCmd
- func (c *ClusterClient) Del(keys ...string) *IntCmd
- func (c *ClusterClient) Dump(key string) *StringCmd
- func (c *ClusterClient) Echo(message interface{}) *StringCmd
- func (c *ClusterClient) Eval(script string, keys []string, args ...interface{}) *Cmd
- func (c *ClusterClient) EvalSha(sha1 string, keys []string, args ...interface{}) *Cmd
- func (c *ClusterClient) Exists(keys ...string) *IntCmd
- func (c *ClusterClient) Expire(key string, expiration time.Duration) *BoolCmd
- func (c *ClusterClient) ExpireAt(key string, tm time.Time) *BoolCmd
- func (c *ClusterClient) FlushAll() *StatusCmd
- func (c *ClusterClient) FlushAllAsync() *StatusCmd
- func (c *ClusterClient) FlushDB() *StatusCmd
- func (c *ClusterClient) FlushDBAsync() *StatusCmd
- func (c *ClusterClient) FlushDb() *StatusCmd
- func (c *ClusterClient) ForEachMaster(fn func(client *Client) error) error
- func (c *ClusterClient) ForEachNode(fn func(client *Client) error) error
- func (c *ClusterClient) ForEachSlave(fn func(client *Client) error) error
- func (c *ClusterClient) GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd
- func (c *ClusterClient) GeoDist(key string, member1, member2, unit string) *FloatCmd
- func (c *ClusterClient) GeoHash(key string, members ...string) *StringSliceCmd
- func (c *ClusterClient) GeoPos(key string, members ...string) *GeoPosCmd
- func (c *ClusterClient) GeoRadius(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *ClusterClient) GeoRadiusByMember(key, member string, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *ClusterClient) GeoRadiusByMemberRO(key, member string, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *ClusterClient) GeoRadiusRO(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *ClusterClient) Get(key string) *StringCmd
- func (c *ClusterClient) GetBit(key string, offset int64) *IntCmd
- func (c *ClusterClient) GetRange(key string, start, end int64) *StringCmd
- func (c *ClusterClient) GetSet(key string, value interface{}) *StringCmd
- func (c *ClusterClient) HDel(key string, fields ...string) *IntCmd
- func (c *ClusterClient) HExists(key, field string) *BoolCmd
- func (c *ClusterClient) HGet(key, field string) *StringCmd
- func (c *ClusterClient) HGetAll(key string) *StringStringMapCmd
- func (c *ClusterClient) HIncrBy(key, field string, incr int64) *IntCmd
- func (c *ClusterClient) HIncrByFloat(key, field string, incr float64) *FloatCmd
- func (c *ClusterClient) HKeys(key string) *StringSliceCmd
- func (c *ClusterClient) HLen(key string) *IntCmd
- func (c *ClusterClient) HMGet(key string, fields ...string) *SliceCmd
- func (c *ClusterClient) HMSet(key string, fields map[string]interface{}) *StatusCmd
- func (c *ClusterClient) HScan(key string, cursor uint64, match string, count int64) *ScanCmd
- func (c *ClusterClient) HSet(key, field string, value interface{}) *BoolCmd
- func (c *ClusterClient) HSetNX(key, field string, value interface{}) *BoolCmd
- func (c *ClusterClient) HVals(key string) *StringSliceCmd
- func (c *ClusterClient) Incr(key string) *IntCmd
- func (c *ClusterClient) IncrBy(key string, value int64) *IntCmd
- func (c *ClusterClient) IncrByFloat(key string, value float64) *FloatCmd
- func (c *ClusterClient) Info(section ...string) *StringCmd
- func (c *ClusterClient) Keys(pattern string) *StringSliceCmd
- func (c *ClusterClient) LIndex(key string, index int64) *StringCmd
- func (c *ClusterClient) LInsert(key, op string, pivot, value interface{}) *IntCmd
- func (c *ClusterClient) LInsertAfter(key string, pivot, value interface{}) *IntCmd
- func (c *ClusterClient) LInsertBefore(key string, pivot, value interface{}) *IntCmd
- func (c *ClusterClient) LLen(key string) *IntCmd
- func (c *ClusterClient) LPop(key string) *StringCmd
- func (c *ClusterClient) LPush(key string, values ...interface{}) *IntCmd
- func (c *ClusterClient) LPushX(key string, value interface{}) *IntCmd
- func (c *ClusterClient) LRange(key string, start, stop int64) *StringSliceCmd
- func (c *ClusterClient) LRem(key string, count int64, value interface{}) *IntCmd
- func (c *ClusterClient) LSet(key string, index int64, value interface{}) *StatusCmd
- func (c *ClusterClient) LTrim(key string, start, stop int64) *StatusCmd
- func (c *ClusterClient) LastSave() *IntCmd
- func (c *ClusterClient) MGet(keys ...string) *SliceCmd
- func (c *ClusterClient) MSet(pairs ...interface{}) *StatusCmd
- func (c *ClusterClient) MSetNX(pairs ...interface{}) *BoolCmd
- func (c *ClusterClient) Migrate(host, port, key string, db int64, timeout time.Duration) *StatusCmd
- func (c *ClusterClient) Move(key string, db int64) *BoolCmd
- func (c *ClusterClient) ObjectEncoding(key string) *StringCmd
- func (c *ClusterClient) ObjectIdleTime(key string) *DurationCmd
- func (c *ClusterClient) ObjectRefCount(key string) *IntCmd
- func (c *ClusterClient) Options() *ClusterOptions
- func (c *ClusterClient) PExpire(key string, expiration time.Duration) *BoolCmd
- func (c *ClusterClient) PExpireAt(key string, tm time.Time) *BoolCmd
- func (c *ClusterClient) PFAdd(key string, els ...interface{}) *IntCmd
- func (c *ClusterClient) PFCount(keys ...string) *IntCmd
- func (c *ClusterClient) PFMerge(dest string, keys ...string) *StatusCmd
- func (c *ClusterClient) PSubscribe(channels ...string) *PubSub
- func (c *ClusterClient) PTTL(key string) *DurationCmd
- func (c *ClusterClient) Persist(key string) *BoolCmd
- func (c *ClusterClient) Ping() *StatusCmd
- func (c *ClusterClient) Pipeline() Pipeliner
- func (c *ClusterClient) Pipelined(fn func(Pipeliner) error) ([]Cmder, error)
- func (c *ClusterClient) PoolStats() *PoolStats
- func (c *ClusterClient) Process(cmd Cmder) error
- func (c *ClusterClient) PubSubChannels(pattern string) *StringSliceCmd
- func (c *ClusterClient) PubSubNumPat() *IntCmd
- func (c *ClusterClient) PubSubNumSub(channels ...string) *StringIntMapCmd
- func (c *ClusterClient) Publish(channel string, message interface{}) *IntCmd
- func (c *ClusterClient) Quit() *StatusCmd
- func (c *ClusterClient) RPop(key string) *StringCmd
- func (c *ClusterClient) RPopLPush(source, destination string) *StringCmd
- func (c *ClusterClient) RPush(key string, values ...interface{}) *IntCmd
- func (c *ClusterClient) RPushX(key string, value interface{}) *IntCmd
- func (c *ClusterClient) RandomKey() *StringCmd
- func (c *ClusterClient) Rename(key, newkey string) *StatusCmd
- func (c *ClusterClient) RenameNX(key, newkey string) *BoolCmd
- func (c *ClusterClient) Restore(key string, ttl time.Duration, value string) *StatusCmd
- func (c *ClusterClient) RestoreReplace(key string, ttl time.Duration, value string) *StatusCmd
- func (c *ClusterClient) SAdd(key string, members ...interface{}) *IntCmd
- func (c *ClusterClient) SCard(key string) *IntCmd
- func (c *ClusterClient) SDiff(keys ...string) *StringSliceCmd
- func (c *ClusterClient) SDiffStore(destination string, keys ...string) *IntCmd
- func (c *ClusterClient) SInter(keys ...string) *StringSliceCmd
- func (c *ClusterClient) SInterStore(destination string, keys ...string) *IntCmd
- func (c *ClusterClient) SIsMember(key string, member interface{}) *BoolCmd
- func (c *ClusterClient) SMembers(key string) *StringSliceCmd
- func (c *ClusterClient) SMembersMap(key string) *StringStructMapCmd
- func (c *ClusterClient) SMove(source, destination string, member interface{}) *BoolCmd
- func (c *ClusterClient) SPop(key string) *StringCmd
- func (c *ClusterClient) SPopN(key string, count int64) *StringSliceCmd
- func (c *ClusterClient) SRandMember(key string) *StringCmd
- func (c *ClusterClient) SRandMemberN(key string, count int64) *StringSliceCmd
- func (c *ClusterClient) SRem(key string, members ...interface{}) *IntCmd
- func (c *ClusterClient) SScan(key string, cursor uint64, match string, count int64) *ScanCmd
- func (c *ClusterClient) SUnion(keys ...string) *StringSliceCmd
- func (c *ClusterClient) SUnionStore(destination string, keys ...string) *IntCmd
- func (c *ClusterClient) Save() *StatusCmd
- func (c *ClusterClient) Scan(cursor uint64, match string, count int64) *ScanCmd
- func (c *ClusterClient) ScriptExists(scripts ...string) *BoolSliceCmd
- func (c *ClusterClient) ScriptFlush() *StatusCmd
- func (c *ClusterClient) ScriptKill() *StatusCmd
- func (c *ClusterClient) ScriptLoad(script string) *StringCmd
- func (c *ClusterClient) Set(key string, value interface{}, expiration time.Duration) *StatusCmd
- func (c *ClusterClient) SetBit(key string, offset int64, value int) *IntCmd
- func (c *ClusterClient) SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd
- func (c *ClusterClient) SetRange(key string, offset int64, value string) *IntCmd
- func (c *ClusterClient) SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd
- func (c *ClusterClient) Shutdown() *StatusCmd
- func (c *ClusterClient) ShutdownNoSave() *StatusCmd
- func (c *ClusterClient) ShutdownSave() *StatusCmd
- func (c *ClusterClient) SlaveOf(host, port string) *StatusCmd
- func (c *ClusterClient) SlowLog()
- func (c *ClusterClient) Sort(key string, sort Sort) *StringSliceCmd
- func (c *ClusterClient) SortInterfaces(key string, sort Sort) *SliceCmd
- func (c *ClusterClient) StrLen(key string) *IntCmd
- func (c *ClusterClient) Subscribe(channels ...string) *PubSub
- func (c *ClusterClient) Sync()
- func (c *ClusterClient) TTL(key string) *DurationCmd
- func (c *ClusterClient) Time() *TimeCmd
- func (c *ClusterClient) TxPipeline() Pipeliner
- func (c *ClusterClient) TxPipelined(fn func(Pipeliner) error) ([]Cmder, error)
- func (c *ClusterClient) Type(key string) *StatusCmd
- func (c *ClusterClient) Unlink(keys ...string) *IntCmd
- func (c *ClusterClient) Wait(numSlaves int, timeout time.Duration) *IntCmd
- func (c *ClusterClient) Watch(fn func(*Tx) error, keys ...string) error
- func (c *ClusterClient) ZAdd(key string, members ...Z) *IntCmd
- func (c *ClusterClient) ZAddCh(key string, members ...Z) *IntCmd
- func (c *ClusterClient) ZAddNX(key string, members ...Z) *IntCmd
- func (c *ClusterClient) ZAddNXCh(key string, members ...Z) *IntCmd
- func (c *ClusterClient) ZAddXX(key string, members ...Z) *IntCmd
- func (c *ClusterClient) ZAddXXCh(key string, members ...Z) *IntCmd
- func (c *ClusterClient) ZCard(key string) *IntCmd
- func (c *ClusterClient) ZCount(key, min, max string) *IntCmd
- func (c *ClusterClient) ZIncr(key string, member Z) *FloatCmd
- func (c *ClusterClient) ZIncrBy(key string, increment float64, member string) *FloatCmd
- func (c *ClusterClient) ZIncrNX(key string, member Z) *FloatCmd
- func (c *ClusterClient) ZIncrXX(key string, member Z) *FloatCmd
- func (c *ClusterClient) ZInterStore(destination string, store ZStore, keys ...string) *IntCmd
- func (c *ClusterClient) ZLexCount(key, min, max string) *IntCmd
- func (c *ClusterClient) ZRange(key string, start, stop int64) *StringSliceCmd
- func (c *ClusterClient) ZRangeByLex(key string, opt ZRangeBy) *StringSliceCmd
- func (c *ClusterClient) ZRangeByScore(key string, opt ZRangeBy) *StringSliceCmd
- func (c *ClusterClient) ZRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd
- func (c *ClusterClient) ZRangeWithScores(key string, start, stop int64) *ZSliceCmd
- func (c *ClusterClient) ZRank(key, member string) *IntCmd
- func (c *ClusterClient) ZRem(key string, members ...interface{}) *IntCmd
- func (c *ClusterClient) ZRemRangeByLex(key, min, max string) *IntCmd
- func (c *ClusterClient) ZRemRangeByRank(key string, start, stop int64) *IntCmd
- func (c *ClusterClient) ZRemRangeByScore(key, min, max string) *IntCmd
- func (c *ClusterClient) ZRevRange(key string, start, stop int64) *StringSliceCmd
- func (c *ClusterClient) ZRevRangeByLex(key string, opt ZRangeBy) *StringSliceCmd
- func (c *ClusterClient) ZRevRangeByScore(key string, opt ZRangeBy) *StringSliceCmd
- func (c *ClusterClient) ZRevRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd
- func (c *ClusterClient) ZRevRangeWithScores(key string, start, stop int64) *ZSliceCmd
- func (c *ClusterClient) ZRevRank(key, member string) *IntCmd
- func (c *ClusterClient) ZScan(key string, cursor uint64, match string, count int64) *ScanCmd
- func (c *ClusterClient) ZScore(key, member string) *FloatCmd
- func (c *ClusterClient) ZUnionStore(dest string, store ZStore, keys ...string) *IntCmd
- type ClusterNode
- type ClusterOptions
- type ClusterSlot
- type ClusterSlotsCmd
- type Cmd
- type Cmdable
- type Cmder
- type CommandInfo
- type CommandsInfoCmd
- func (cmd *CommandsInfoCmd) Args() []interface{}
- func (cmd *CommandsInfoCmd) Err() error
- func (cmd *CommandsInfoCmd) Name() string
- func (cmd *CommandsInfoCmd) Result() (map[string]*CommandInfo, error)
- func (cmd *CommandsInfoCmd) String() string
- func (cmd *CommandsInfoCmd) Val() map[string]*CommandInfo
- type Conn
- func (c *Conn) Auth(password string) *StatusCmd
- func (c *Conn) ClientSetName(name string) *BoolCmd
- func (c *Conn) Close() error
- func (c *Conn) Pipeline() Pipeliner
- func (c *Conn) Pipelined(fn func(Pipeliner) error) ([]Cmder, error)
- func (c *Conn) Process(cmd Cmder) error
- func (c *Conn) ReadOnly() *StatusCmd
- func (c *Conn) ReadWrite() *StatusCmd
- func (c *Conn) Select(index int) *StatusCmd
- func (c *Conn) String() string
- func (c *Conn) TxPipeline() Pipeliner
- func (c *Conn) TxPipelined(fn func(Pipeliner) error) ([]Cmder, error)
- func (c *Conn) WrapProcess(fn func(oldProcess func(cmd Cmder) error) func(cmd Cmder) error)
- type DurationCmd
- type FailoverOptions
- type FloatCmd
- type GeoLocation
- type GeoLocationCmd
- type GeoPos
- type GeoPosCmd
- type GeoRadiusQuery
- type IntCmd
- type Message
- type Options
- type Pipeline
- func (c *Pipeline) Auth(password string) *StatusCmd
- func (c *Pipeline) ClientSetName(name string) *BoolCmd
- func (c *Pipeline) Close() error
- func (c *Pipeline) Discard() error
- func (c *Pipeline) Exec() ([]Cmder, error)
- func (c *Pipeline) Pipeline() Pipeliner
- func (c *Pipeline) Pipelined(fn func(Pipeliner) error) ([]Cmder, error)
- func (c *Pipeline) Process(cmd Cmder) error
- func (c *Pipeline) ReadOnly() *StatusCmd
- func (c *Pipeline) ReadWrite() *StatusCmd
- func (c *Pipeline) Select(index int) *StatusCmd
- func (c *Pipeline) TxPipeline() Pipeliner
- func (c *Pipeline) TxPipelined(fn func(Pipeliner) error) ([]Cmder, error)
- type Pipeliner
- type Pong
- type PoolStats
- type PubSub
- func (c *PubSub) Channel() <-chan *Message
- func (c *PubSub) Close() error
- func (c *PubSub) PSubscribe(patterns ...string) error
- func (c *PubSub) PUnsubscribe(patterns ...string) error
- func (c *PubSub) Ping(payload ...string) error
- func (c *PubSub) Receive() (interface{}, error)
- func (c *PubSub) ReceiveMessage() (*Message, error)
- func (c *PubSub) ReceiveTimeout(timeout time.Duration) (interface{}, error)
- func (c *PubSub) Subscribe(channels ...string) error
- func (c *PubSub) Unsubscribe(channels ...string) error
- type Ring
- func (c *Ring) Append(key, value string) *IntCmd
- func (c *Ring) BLPop(timeout time.Duration, keys ...string) *StringSliceCmd
- func (c *Ring) BRPop(timeout time.Duration, keys ...string) *StringSliceCmd
- func (c *Ring) BRPopLPush(source, destination string, timeout time.Duration) *StringCmd
- func (c *Ring) BgRewriteAOF() *StatusCmd
- func (c *Ring) BgSave() *StatusCmd
- func (c *Ring) BitCount(key string, bitCount *BitCount) *IntCmd
- func (c *Ring) BitOpAnd(destKey string, keys ...string) *IntCmd
- func (c *Ring) BitOpNot(destKey string, key string) *IntCmd
- func (c *Ring) BitOpOr(destKey string, keys ...string) *IntCmd
- func (c *Ring) BitOpXor(destKey string, keys ...string) *IntCmd
- func (c *Ring) BitPos(key string, bit int64, pos ...int64) *IntCmd
- func (c *Ring) ClientGetName() *StringCmd
- func (c *Ring) ClientKill(ipPort string) *StatusCmd
- func (c *Ring) ClientList() *StringCmd
- func (c *Ring) ClientPause(dur time.Duration) *BoolCmd
- func (c *Ring) Close() error
- func (c *Ring) ClusterAddSlots(slots ...int) *StatusCmd
- func (c *Ring) ClusterAddSlotsRange(min, max int) *StatusCmd
- func (c *Ring) ClusterCountFailureReports(nodeID string) *IntCmd
- func (c *Ring) ClusterCountKeysInSlot(slot int) *IntCmd
- func (c *Ring) ClusterDelSlots(slots ...int) *StatusCmd
- func (c *Ring) ClusterDelSlotsRange(min, max int) *StatusCmd
- func (c *Ring) ClusterFailover() *StatusCmd
- func (c *Ring) ClusterForget(nodeID string) *StatusCmd
- func (c *Ring) ClusterInfo() *StringCmd
- func (c *Ring) ClusterKeySlot(key string) *IntCmd
- func (c *Ring) ClusterMeet(host, port string) *StatusCmd
- func (c *Ring) ClusterNodes() *StringCmd
- func (c *Ring) ClusterReplicate(nodeID string) *StatusCmd
- func (c *Ring) ClusterResetHard() *StatusCmd
- func (c *Ring) ClusterResetSoft() *StatusCmd
- func (c *Ring) ClusterSaveConfig() *StatusCmd
- func (c *Ring) ClusterSlaves(nodeID string) *StringSliceCmd
- func (c *Ring) ClusterSlots() *ClusterSlotsCmd
- func (c *Ring) Command() *CommandsInfoCmd
- func (c *Ring) ConfigGet(parameter string) *SliceCmd
- func (c *Ring) ConfigResetStat() *StatusCmd
- func (c *Ring) ConfigSet(parameter, value string) *StatusCmd
- func (c *Ring) DBSize() *IntCmd
- func (c *Ring) DbSize() *IntCmd
- func (c *Ring) DebugObject(key string) *StringCmd
- func (c *Ring) Decr(key string) *IntCmd
- func (c *Ring) DecrBy(key string, decrement int64) *IntCmd
- func (c *Ring) Del(keys ...string) *IntCmd
- func (c *Ring) Dump(key string) *StringCmd
- func (c *Ring) Echo(message interface{}) *StringCmd
- func (c *Ring) Eval(script string, keys []string, args ...interface{}) *Cmd
- func (c *Ring) EvalSha(sha1 string, keys []string, args ...interface{}) *Cmd
- func (c *Ring) Exists(keys ...string) *IntCmd
- func (c *Ring) Expire(key string, expiration time.Duration) *BoolCmd
- func (c *Ring) ExpireAt(key string, tm time.Time) *BoolCmd
- func (c *Ring) FlushAll() *StatusCmd
- func (c *Ring) FlushAllAsync() *StatusCmd
- func (c *Ring) FlushDB() *StatusCmd
- func (c *Ring) FlushDBAsync() *StatusCmd
- func (c *Ring) FlushDb() *StatusCmd
- func (c *Ring) ForEachShard(fn func(client *Client) error) error
- func (c *Ring) GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd
- func (c *Ring) GeoDist(key string, member1, member2, unit string) *FloatCmd
- func (c *Ring) GeoHash(key string, members ...string) *StringSliceCmd
- func (c *Ring) GeoPos(key string, members ...string) *GeoPosCmd
- func (c *Ring) GeoRadius(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *Ring) GeoRadiusByMember(key, member string, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *Ring) GeoRadiusByMemberRO(key, member string, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *Ring) GeoRadiusRO(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd
- func (c *Ring) Get(key string) *StringCmd
- func (c *Ring) GetBit(key string, offset int64) *IntCmd
- func (c *Ring) GetRange(key string, start, end int64) *StringCmd
- func (c *Ring) GetSet(key string, value interface{}) *StringCmd
- func (c *Ring) HDel(key string, fields ...string) *IntCmd
- func (c *Ring) HExists(key, field string) *BoolCmd
- func (c *Ring) HGet(key, field string) *StringCmd
- func (c *Ring) HGetAll(key string) *StringStringMapCmd
- func (c *Ring) HIncrBy(key, field string, incr int64) *IntCmd
- func (c *Ring) HIncrByFloat(key, field string, incr float64) *FloatCmd
- func (c *Ring) HKeys(key string) *StringSliceCmd
- func (c *Ring) HLen(key string) *IntCmd
- func (c *Ring) HMGet(key string, fields ...string) *SliceCmd
- func (c *Ring) HMSet(key string, fields map[string]interface{}) *StatusCmd
- func (c *Ring) HScan(key string, cursor uint64, match string, count int64) *ScanCmd
- func (c *Ring) HSet(key, field string, value interface{}) *BoolCmd
- func (c *Ring) HSetNX(key, field string, value interface{}) *BoolCmd
- func (c *Ring) HVals(key string) *StringSliceCmd
- func (c *Ring) Incr(key string) *IntCmd
- func (c *Ring) IncrBy(key string, value int64) *IntCmd
- func (c *Ring) IncrByFloat(key string, value float64) *FloatCmd
- func (c *Ring) Info(section ...string) *StringCmd
- func (c *Ring) Keys(pattern string) *StringSliceCmd
- func (c *Ring) LIndex(key string, index int64) *StringCmd
- func (c *Ring) LInsert(key, op string, pivot, value interface{}) *IntCmd
- func (c *Ring) LInsertAfter(key string, pivot, value interface{}) *IntCmd
- func (c *Ring) LInsertBefore(key string, pivot, value interface{}) *IntCmd
- func (c *Ring) LLen(key string) *IntCmd
- func (c *Ring) LPop(key string) *StringCmd
- func (c *Ring) LPush(key string, values ...interface{}) *IntCmd
- func (c *Ring) LPushX(key string, value interface{}) *IntCmd
- func (c *Ring) LRange(key string, start, stop int64) *StringSliceCmd
- func (c *Ring) LRem(key string, count int64, value interface{}) *IntCmd
- func (c *Ring) LSet(key string, index int64, value interface{}) *StatusCmd
- func (c *Ring) LTrim(key string, start, stop int64) *StatusCmd
- func (c *Ring) LastSave() *IntCmd
- func (c *Ring) MGet(keys ...string) *SliceCmd
- func (c *Ring) MSet(pairs ...interface{}) *StatusCmd
- func (c *Ring) MSetNX(pairs ...interface{}) *BoolCmd
- func (c *Ring) Migrate(host, port, key string, db int64, timeout time.Duration) *StatusCmd
- func (c *Ring) Move(key string, db int64) *BoolCmd
- func (c *Ring) ObjectEncoding(key string) *StringCmd
- func (c *Ring) ObjectIdleTime(key string) *DurationCmd
- func (c *Ring) ObjectRefCount(key string) *IntCmd
- func (c *Ring) Options() *RingOptions
- func (c *Ring) PExpire(key string, expiration time.Duration) *BoolCmd
- func (c *Ring) PExpireAt(key string, tm time.Time) *BoolCmd
- func (c *Ring) PFAdd(key string, els ...interface{}) *IntCmd
- func (c *Ring) PFCount(keys ...string) *IntCmd
- func (c *Ring) PFMerge(dest string, keys ...string) *StatusCmd
- func (c *Ring) PSubscribe(channels ...string) *PubSub
- func (c *Ring) PTTL(key string) *DurationCmd
- func (c *Ring) Persist(key string) *BoolCmd
- func (c *Ring) Ping() *StatusCmd
- func (c *Ring) Pipeline() Pipeliner
- func (c *Ring) Pipelined(fn func(Pipeliner) error) ([]Cmder, error)
- func (c *Ring) PoolStats() *PoolStats
- func (c *Ring) Process(cmd Cmder) error
- func (c *Ring) PubSubChannels(pattern string) *StringSliceCmd
- func (c *Ring) PubSubNumPat() *IntCmd
- func (c *Ring) PubSubNumSub(channels ...string) *StringIntMapCmd
- func (c *Ring) Publish(channel string, message interface{}) *IntCmd
- func (c *Ring) Quit() *StatusCmd
- func (c *Ring) RPop(key string) *StringCmd
- func (c *Ring) RPopLPush(source, destination string) *StringCmd
- func (c *Ring) RPush(key string, values ...interface{}) *IntCmd
- func (c *Ring) RPushX(key string, value interface{}) *IntCmd
- func (c *Ring) RandomKey() *StringCmd
- func (c *Ring) Rename(key, newkey string) *StatusCmd
- func (c *Ring) RenameNX(key, newkey string) *BoolCmd
- func (c *Ring) Restore(key string, ttl time.Duration, value string) *StatusCmd
- func (c *Ring) RestoreReplace(key string, ttl time.Duration, value string) *StatusCmd
- func (c *Ring) SAdd(key string, members ...interface{}) *IntCmd
- func (c *Ring) SCard(key string) *IntCmd
- func (c *Ring) SDiff(keys ...string) *StringSliceCmd
- func (c *Ring) SDiffStore(destination string, keys ...string) *IntCmd
- func (c *Ring) SInter(keys ...string) *StringSliceCmd
- func (c *Ring) SInterStore(destination string, keys ...string) *IntCmd
- func (c *Ring) SIsMember(key string, member interface{}) *BoolCmd
- func (c *Ring) SMembers(key string) *StringSliceCmd
- func (c *Ring) SMembersMap(key string) *StringStructMapCmd
- func (c *Ring) SMove(source, destination string, member interface{}) *BoolCmd
- func (c *Ring) SPop(key string) *StringCmd
- func (c *Ring) SPopN(key string, count int64) *StringSliceCmd
- func (c *Ring) SRandMember(key string) *StringCmd
- func (c *Ring) SRandMemberN(key string, count int64) *StringSliceCmd
- func (c *Ring) SRem(key string, members ...interface{}) *IntCmd
- func (c *Ring) SScan(key string, cursor uint64, match string, count int64) *ScanCmd
- func (c *Ring) SUnion(keys ...string) *StringSliceCmd
- func (c *Ring) SUnionStore(destination string, keys ...string) *IntCmd
- func (c *Ring) Save() *StatusCmd
- func (c *Ring) Scan(cursor uint64, match string, count int64) *ScanCmd
- func (c *Ring) ScriptExists(scripts ...string) *BoolSliceCmd
- func (c *Ring) ScriptFlush() *StatusCmd
- func (c *Ring) ScriptKill() *StatusCmd
- func (c *Ring) ScriptLoad(script string) *StringCmd
- func (c *Ring) Set(key string, value interface{}, expiration time.Duration) *StatusCmd
- func (c *Ring) SetBit(key string, offset int64, value int) *IntCmd
- func (c *Ring) SetNX(key string, value interface{}, expiration time.Duration) *BoolCmd
- func (c *Ring) SetRange(key string, offset int64, value string) *IntCmd
- func (c *Ring) SetXX(key string, value interface{}, expiration time.Duration) *BoolCmd
- func (c *Ring) Shutdown() *StatusCmd
- func (c *Ring) ShutdownNoSave() *StatusCmd
- func (c *Ring) ShutdownSave() *StatusCmd
- func (c *Ring) SlaveOf(host, port string) *StatusCmd
- func (c *Ring) SlowLog()
- func (c *Ring) Sort(key string, sort Sort) *StringSliceCmd
- func (c *Ring) SortInterfaces(key string, sort Sort) *SliceCmd
- func (c *Ring) StrLen(key string) *IntCmd
- func (c *Ring) Subscribe(channels ...string) *PubSub
- func (c *Ring) Sync()
- func (c *Ring) TTL(key string) *DurationCmd
- func (c *Ring) Time() *TimeCmd
- func (c *Ring) TxPipeline() Pipeliner
- func (c *Ring) TxPipelined(fn func(Pipeliner) error) ([]Cmder, error)
- func (c *Ring) Type(key string) *StatusCmd
- func (c *Ring) Unlink(keys ...string) *IntCmd
- func (c *Ring) Wait(numSlaves int, timeout time.Duration) *IntCmd
- func (c *Ring) ZAdd(key string, members ...Z) *IntCmd
- func (c *Ring) ZAddCh(key string, members ...Z) *IntCmd
- func (c *Ring) ZAddNX(key string, members ...Z) *IntCmd
- func (c *Ring) ZAddNXCh(key string, members ...Z) *IntCmd
- func (c *Ring) ZAddXX(key string, members ...Z) *IntCmd
- func (c *Ring) ZAddXXCh(key string, members ...Z) *IntCmd
- func (c *Ring) ZCard(key string) *IntCmd
- func (c *Ring) ZCount(key, min, max string) *IntCmd
- func (c *Ring) ZIncr(key string, member Z) *FloatCmd
- func (c *Ring) ZIncrBy(key string, increment float64, member string) *FloatCmd
- func (c *Ring) ZIncrNX(key string, member Z) *FloatCmd
- func (c *Ring) ZIncrXX(key string, member Z) *FloatCmd
- func (c *Ring) ZInterStore(destination string, store ZStore, keys ...string) *IntCmd
- func (c *Ring) ZLexCount(key, min, max string) *IntCmd
- func (c *Ring) ZRange(key string, start, stop int64) *StringSliceCmd
- func (c *Ring) ZRangeByLex(key string, opt ZRangeBy) *StringSliceCmd
- func (c *Ring) ZRangeByScore(key string, opt ZRangeBy) *StringSliceCmd
- func (c *Ring) ZRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd
- func (c *Ring) ZRangeWithScores(key string, start, stop int64) *ZSliceCmd
- func (c *Ring) ZRank(key, member string) *IntCmd
- func (c *Ring) ZRem(key string, members ...interface{}) *IntCmd
- func (c *Ring) ZRemRangeByLex(key, min, max string) *IntCmd
- func (c *Ring) ZRemRangeByRank(key string, start, stop int64) *IntCmd
- func (c *Ring) ZRemRangeByScore(key, min, max string) *IntCmd
- func (c *Ring) ZRevRange(key string, start, stop int64) *StringSliceCmd
- func (c *Ring) ZRevRangeByLex(key string, opt ZRangeBy) *StringSliceCmd
- func (c *Ring) ZRevRangeByScore(key string, opt ZRangeBy) *StringSliceCmd
- func (c *Ring) ZRevRangeByScoreWithScores(key string, opt ZRangeBy) *ZSliceCmd
- func (c *Ring) ZRevRangeWithScores(key string, start, stop int64) *ZSliceCmd
- func (c *Ring) ZRevRank(key, member string) *IntCmd
- func (c *Ring) ZScan(key string, cursor uint64, match string, count int64) *ScanCmd
- func (c *Ring) ZScore(key, member string) *FloatCmd
- func (c *Ring) ZUnionStore(dest string, store ZStore, keys ...string) *IntCmd
- type RingOptions
- type ScanCmd
- func (cmd *ScanCmd) Args() []interface{}
- func (cmd *ScanCmd) Err() error
- func (cmd *ScanCmd) Iterator() *ScanIterator
- func (cmd *ScanCmd) Name() string
- func (cmd *ScanCmd) Result() (keys []string, cursor uint64, err error)
- func (cmd *ScanCmd) String() string
- func (cmd *ScanCmd) Val() (keys []string, cursor uint64)
- type ScanIterator
- type Script
- func (s *Script) Eval(c scripter, keys []string, args ...interface{}) *Cmd
- func (s *Script) EvalSha(c scripter, keys []string, args ...interface{}) *Cmd
- func (s *Script) Exists(c scripter) *BoolSliceCmd
- func (s *Script) Hash() string
- func (s *Script) Load(c scripter) *StringCmd
- func (s *Script) Run(c scripter, keys []string, args ...interface{}) *Cmd
- type SliceCmd
- type Sort
- type StatefulCmdable
- type StatusCmd
- type StringCmd
- func (cmd *StringCmd) Args() []interface{}
- func (cmd *StringCmd) Bytes() ([]byte, error)
- func (cmd *StringCmd) Err() error
- func (cmd *StringCmd) Float64() (float64, error)
- func (cmd *StringCmd) Int64() (int64, error)
- func (cmd *StringCmd) Name() string
- func (cmd *StringCmd) Result() (string, error)
- func (cmd *StringCmd) Scan(val interface{}) error
- func (cmd *StringCmd) String() string
- func (cmd *StringCmd) Uint64() (uint64, error)
- func (cmd *StringCmd) Val() string
- type StringIntMapCmd
- type StringSliceCmd
- func (cmd *StringSliceCmd) Args() []interface{}
- func (cmd *StringSliceCmd) Err() error
- func (cmd *StringSliceCmd) Name() string
- func (cmd *StringSliceCmd) Result() ([]string, error)
- func (cmd *StringSliceCmd) ScanSlice(container interface{}) error
- func (cmd *StringSliceCmd) String() string
- func (cmd *StringSliceCmd) Val() []string
- type StringStringMapCmd
- func (cmd *StringStringMapCmd) Args() []interface{}
- func (cmd *StringStringMapCmd) Err() error
- func (cmd *StringStringMapCmd) Name() string
- func (cmd *StringStringMapCmd) Result() (map[string]string, error)
- func (cmd *StringStringMapCmd) String() string
- func (cmd *StringStringMapCmd) Val() map[string]string
- type StringStructMapCmd
- func (cmd *StringStructMapCmd) Args() []interface{}
- func (cmd *StringStructMapCmd) Err() error
- func (cmd *StringStructMapCmd) Name() string
- func (cmd *StringStructMapCmd) Result() (map[string]struct{}, error)
- func (cmd *StringStructMapCmd) String() string
- func (cmd *StringStructMapCmd) Val() map[string]struct{}
- type Subscription
- type TimeCmd
- type Tx
- func (c *Tx) Auth(password string) *StatusCmd
- func (c *Tx) ClientSetName(name string) *BoolCmd
- func (c *Tx) Close() error
- func (c *Tx) Pipeline() Pipeliner
- func (c *Tx) Pipelined(fn func(Pipeliner) error) ([]Cmder, error)
- func (c *Tx) Process(cmd Cmder) error
- func (c *Tx) ReadOnly() *StatusCmd
- func (c *Tx) ReadWrite() *StatusCmd
- func (c *Tx) Select(index int) *StatusCmd
- func (c *Tx) String() string
- func (c *Tx) TxPipeline() Pipeliner
- func (c *Tx) TxPipelined(fn func(Pipeliner) error) ([]Cmder, error)
- func (c *Tx) Unwatch(keys ...string) *StatusCmd
- func (c *Tx) Watch(keys ...string) *StatusCmd
- func (c *Tx) WrapProcess(fn func(oldProcess func(cmd Cmder) error) func(cmd Cmder) error)
- type UniversalClient
- type UniversalOptions
- type Z
- type ZRangeBy
- type ZSliceCmd
- type ZStore
Examples ¶
- Package (CustomCommand)
- Package (Instrumentation)
- Client
- Client.BLPop
- Client.Incr
- Client.Pipeline
- Client.Pipelined
- Client.Scan
- Client.Set
- Client.TxPipeline
- Client.TxPipelined
- Client.Watch
- NewClient
- NewClusterClient
- NewFailoverClient
- NewRing
- NewUniversalClient (Cluster)
- NewUniversalClient (Failover)
- NewUniversalClient (Simple)
- ParseURL
- PubSub
- PubSub.Receive
- ScanCmd.Iterator
- ScanIterator
- Script
Constants ¶
const Nil = internal.Nil
Redis nil reply returned when key does not exist.
const TxFailedErr = internal.RedisError("redis: transaction failed")
Redis transaction failed.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BoolCmd ¶
type BoolCmd struct {
// contains filtered or unexported fields
}
func NewBoolCmd ¶
func NewBoolCmd(args ...interface{}) *BoolCmd
func NewBoolResult ¶
NewBoolResult returns a BoolCmd initalised with val and err for testing
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) 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 ¶
package main import ( "fmt" "github.com/go-redis/redis" ) var client *redis.Client func main() { 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 exist") } else if err != nil { panic(err) } else { fmt.Println("key2", val2) } }
Output: key value key2 does not exist
func NewClient ¶
NewClient returns a client to the Redis Server specified by Options.
Example ¶
package main import ( "fmt" "github.com/go-redis/redis" ) func main() { 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 ¶
package main import ( "github.com/go-redis/redis" ) func main() { // 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) BLPop ¶
func (c *Client) BLPop(timeout time.Duration, keys ...string) *StringSliceCmd
Example ¶
package main import ( "fmt" "time" "github.com/go-redis/redis" ) var client *redis.Client func main() { 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 (*Client) BgRewriteAOF ¶
func (c *Client) BgRewriteAOF() *StatusCmd
func (*Client) ClientGetName ¶
func (c *Client) ClientGetName() *StringCmd
ClientGetName returns the name of the connection.
func (*Client) ClientKill ¶
func (*Client) ClientList ¶
func (c *Client) ClientList() *StringCmd
func (*Client) ClientPause ¶
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 (*Client) ClusterAddSlotsRange ¶
func (*Client) ClusterCountFailureReports ¶
func (*Client) ClusterCountKeysInSlot ¶
func (*Client) ClusterDelSlots ¶
func (*Client) ClusterDelSlotsRange ¶
func (*Client) ClusterFailover ¶
func (c *Client) ClusterFailover() *StatusCmd
func (*Client) ClusterForget ¶
func (*Client) ClusterInfo ¶
func (c *Client) ClusterInfo() *StringCmd
func (*Client) ClusterKeySlot ¶
func (*Client) ClusterMeet ¶
func (*Client) ClusterNodes ¶
func (c *Client) ClusterNodes() *StringCmd
func (*Client) ClusterReplicate ¶
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) ConfigResetStat ¶
func (c *Client) ConfigResetStat() *StatusCmd
func (*Client) DebugObject ¶
func (*Client) FlushAllAsync ¶
func (c *Client) FlushAllAsync() *StatusCmd
func (*Client) FlushDBAsync ¶
func (c *Client) FlushDBAsync() *StatusCmd
func (*Client) GeoAdd ¶
func (c *Client) GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd
func (*Client) GeoHash ¶
func (c *Client) GeoHash(key string, members ...string) *StringSliceCmd
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) GeoRadiusByMemberRO ¶
func (c *Client) GeoRadiusByMemberRO(key, member string, query *GeoRadiusQuery) *GeoLocationCmd
func (*Client) GeoRadiusRO ¶
func (c *Client) GeoRadiusRO(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd
func (*Client) HGetAll ¶
func (c *Client) HGetAll(key string) *StringStringMapCmd
func (*Client) HIncrByFloat ¶
func (*Client) HKeys ¶
func (c *Client) HKeys(key string) *StringSliceCmd
func (*Client) HVals ¶
func (c *Client) HVals(key string) *StringSliceCmd
func (*Client) Incr ¶
Example ¶
package main import ( "fmt" "github.com/go-redis/redis" ) var client *redis.Client func main() { result, err := client.Incr("counter").Result() if err != nil { panic(err) } fmt.Println(result) }
Output: 1
func (*Client) IncrByFloat ¶
func (*Client) Keys ¶
func (c *Client) Keys(pattern string) *StringSliceCmd
func (*Client) LInsertAfter ¶
func (*Client) LInsertBefore ¶
func (*Client) LRange ¶
func (c *Client) LRange(key string, start, stop int64) *StringSliceCmd
func (*Client) ObjectEncoding ¶
func (*Client) ObjectIdleTime ¶
func (c *Client) ObjectIdleTime(key string) *DurationCmd
func (*Client) ObjectRefCount ¶
func (*Client) PSubscribe ¶
PSubscribe subscribes the client to the given patterns. Patterns can be omitted to create empty subscription.
func (*Client) PTTL ¶
func (c *Client) PTTL(key string) *DurationCmd
func (*Client) Pipeline ¶
Example ¶
package main import ( "fmt" "time" "github.com/go-redis/redis" ) var client *redis.Client func main() { pipe := client.Pipeline() incr := pipe.Incr("pipeline_counter") pipe.Expire("pipeline_counter", time.Hour) // Execute // // INCR pipeline_counter // EXPIRE pipeline_counts 3600 // // using one client-server roundtrip. _, err := pipe.Exec() fmt.Println(incr.Val(), err) }
Output: 1 <nil>
func (*Client) Pipelined ¶
Example ¶
package main import ( "fmt" "time" "github.com/go-redis/redis" ) var client *redis.Client func main() { var incr *redis.IntCmd _, err := client.Pipelined(func(pipe redis.Pipeliner) error { incr = pipe.Incr("pipelined_counter") pipe.Expire("pipelined_counter", time.Hour) return nil }) fmt.Println(incr.Val(), err) }
Output: 1 <nil>
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) RestoreReplace ¶
func (*Client) SDiff ¶
func (c *Client) SDiff(keys ...string) *StringSliceCmd
func (*Client) SDiffStore ¶
func (*Client) SInter ¶
func (c *Client) SInter(keys ...string) *StringSliceCmd
func (*Client) SInterStore ¶
func (*Client) SMembers ¶
func (c *Client) SMembers(key string) *StringSliceCmd
Redis `SMEMBERS key` command output as a slice
func (*Client) SMembersMap ¶
func (c *Client) SMembersMap(key string) *StringStructMapCmd
Redis `SMEMBERS key` command output as a map
func (*Client) SPopN ¶
func (c *Client) SPopN(key string, count int64) *StringSliceCmd
Redis `SPOP key count` command.
func (*Client) SRandMember ¶
Redis `SRANDMEMBER key` command.
func (*Client) SRandMemberN ¶
func (c *Client) SRandMemberN(key string, count int64) *StringSliceCmd
Redis `SRANDMEMBER key count` command.
func (*Client) SUnion ¶
func (c *Client) SUnion(keys ...string) *StringSliceCmd
func (*Client) SUnionStore ¶
func (*Client) Scan ¶
Example ¶
package main import ( "fmt" "github.com/go-redis/redis" ) var client *redis.Client func main() { 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 (*Client) Set ¶
Redis `SET key value [expiration]` command.
Use expiration for `SETEX`-like behavior. Zero expiration means the key has no expiration time.
Example ¶
package main import ( "time" "github.com/go-redis/redis" ) var client *redis.Client func main() { // 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) SetNX ¶
Redis `SET key value [expiration] NX` command.
Zero expiration means the key has no expiration time.
func (*Client) SetXX ¶
Redis `SET key value [expiration] XX` command.
Zero expiration means the key has no expiration time.
func (*Client) ShutdownNoSave ¶
func (c *Client) ShutdownNoSave() *StatusCmd
func (*Client) ShutdownSave ¶
func (c *Client) ShutdownSave() *StatusCmd
func (*Client) Sort ¶
func (c *Client) Sort(key string, sort Sort) *StringSliceCmd
func (*Client) SortInterfaces ¶
func (*Client) Subscribe ¶
Subscribe subscribes the client to the specified channels. Channels can be omitted to create empty subscription.
func (*Client) TTL ¶
func (c *Client) TTL(key string) *DurationCmd
func (*Client) TxPipeline ¶
TxPipeline acts like Pipeline, but wraps queued commands with MULTI/EXEC.
Example ¶
package main import ( "fmt" "time" "github.com/go-redis/redis" ) var client *redis.Client func main() { pipe := client.TxPipeline() incr := pipe.Incr("tx_pipeline_counter") pipe.Expire("tx_pipeline_counter", time.Hour) // Execute // // MULTI // INCR pipeline_counter // EXPIRE pipeline_counts 3600 // EXEC // // using one client-server roundtrip. _, err := pipe.Exec() fmt.Println(incr.Val(), err) }
Output: 1 <nil>
func (*Client) TxPipelined ¶
Example ¶
package main import ( "fmt" "time" "github.com/go-redis/redis" ) var client *redis.Client func main() { var incr *redis.IntCmd _, err := client.TxPipelined(func(pipe redis.Pipeliner) error { incr = pipe.Incr("tx_pipelined_counter") pipe.Expire("tx_pipelined_counter", time.Hour) return nil }) fmt.Println(incr.Val(), err) }
Output: 1 <nil>
func (*Client) Watch ¶
Example ¶
package main import ( "fmt" "strconv" "sync" "time" "github.com/go-redis/redis" ) var client *redis.Client func init() { client = redis.NewClient(&redis.Options{ Addr: ":6379", DialTimeout: 10 * time.Second, ReadTimeout: 30 * time.Second, WriteTimeout: 30 * time.Second, PoolSize: 10, PoolTimeout: 30 * time.Second, }) client.FlushDB() } func main() { 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.Pipelined(func(pipe redis.Pipeliner) error { pipe.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 ¶
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) ZInterStore ¶
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 (*Client) ZRangeWithScores ¶
func (*Client) ZRemRangeByLex ¶
func (*Client) ZRemRangeByRank ¶
func (*Client) ZRemRangeByScore ¶
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 (*Client) ZRevRangeWithScores ¶
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 ¶
package main import ( "github.com/go-redis/redis" ) func main() { // 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) 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 (*ClusterClient) BgRewriteAOF ¶
func (c *ClusterClient) BgRewriteAOF() *StatusCmd
func (*ClusterClient) ClientGetName ¶
func (c *ClusterClient) ClientGetName() *StringCmd
ClientGetName returns the name of the connection.
func (*ClusterClient) ClientKill ¶
func (*ClusterClient) ClientList ¶
func (c *ClusterClient) ClientList() *StringCmd
func (*ClusterClient) ClientPause ¶
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 (*ClusterClient) ClusterAddSlotsRange ¶
func (*ClusterClient) ClusterCountFailureReports ¶
func (*ClusterClient) ClusterCountKeysInSlot ¶
func (*ClusterClient) ClusterDelSlots ¶
func (*ClusterClient) ClusterDelSlotsRange ¶
func (*ClusterClient) ClusterFailover ¶
func (c *ClusterClient) ClusterFailover() *StatusCmd
func (*ClusterClient) ClusterForget ¶
func (*ClusterClient) ClusterInfo ¶
func (c *ClusterClient) ClusterInfo() *StringCmd
func (*ClusterClient) ClusterKeySlot ¶
func (*ClusterClient) ClusterMeet ¶
func (*ClusterClient) ClusterNodes ¶
func (c *ClusterClient) ClusterNodes() *StringCmd
func (*ClusterClient) ClusterReplicate ¶
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) ConfigResetStat ¶
func (c *ClusterClient) ConfigResetStat() *StatusCmd
func (*ClusterClient) DBSize ¶
func (c *ClusterClient) DBSize() *IntCmd
func (*ClusterClient) DbSize ¶
func (c *ClusterClient) DbSize() *IntCmd
Deperecated. Use DBSize instead.
func (*ClusterClient) DebugObject ¶
func (*ClusterClient) FlushAllAsync ¶
func (c *ClusterClient) FlushAllAsync() *StatusCmd
func (*ClusterClient) FlushDBAsync ¶
func (c *ClusterClient) FlushDBAsync() *StatusCmd
func (*ClusterClient) FlushDb ¶
func (c *ClusterClient) FlushDb() *StatusCmd
Deprecated. Use FlushDB instead.
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) ForEachNode ¶
func (c *ClusterClient) ForEachNode(fn func(client *Client) error) error
ForEachNode concurrently calls the fn on each known node in the cluster. It returns the first error if any.
func (*ClusterClient) ForEachSlave ¶
func (c *ClusterClient) ForEachSlave(fn func(client *Client) error) error
ForEachSlave concurrently calls the fn on each slave 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) GeoHash ¶
func (c *ClusterClient) GeoHash(key string, members ...string) *StringSliceCmd
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) GeoRadiusByMemberRO ¶
func (c *ClusterClient) GeoRadiusByMemberRO(key, member string, query *GeoRadiusQuery) *GeoLocationCmd
func (*ClusterClient) GeoRadiusRO ¶
func (c *ClusterClient) GeoRadiusRO(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd
func (*ClusterClient) Get ¶
Redis `GET key` command. It returns redis.Nil error when key does not exist.
func (*ClusterClient) HGetAll ¶
func (c *ClusterClient) HGetAll(key string) *StringStringMapCmd
func (*ClusterClient) HIncrByFloat ¶
func (*ClusterClient) HKeys ¶
func (c *ClusterClient) HKeys(key string) *StringSliceCmd
func (*ClusterClient) HVals ¶
func (c *ClusterClient) HVals(key string) *StringSliceCmd
func (*ClusterClient) IncrByFloat ¶
func (*ClusterClient) Keys ¶
func (c *ClusterClient) Keys(pattern string) *StringSliceCmd
func (*ClusterClient) LInsertAfter ¶
func (*ClusterClient) LInsertBefore ¶
func (*ClusterClient) LRange ¶
func (c *ClusterClient) LRange(key string, start, stop int64) *StringSliceCmd
func (*ClusterClient) ObjectEncoding ¶
func (*ClusterClient) ObjectIdleTime ¶
func (c *ClusterClient) ObjectIdleTime(key string) *DurationCmd
func (*ClusterClient) ObjectRefCount ¶
func (*ClusterClient) Options ¶
func (c *ClusterClient) Options() *ClusterOptions
Options returns read-only Options that were used to create the client.
func (*ClusterClient) PSubscribe ¶
func (c *ClusterClient) PSubscribe(channels ...string) *PubSub
PSubscribe subscribes the client to the given patterns. Patterns can be omitted to create empty subscription.
func (*ClusterClient) PTTL ¶
func (c *ClusterClient) PTTL(key string) *DurationCmd
func (*ClusterClient) Pipeline ¶
func (c *ClusterClient) Pipeline() Pipeliner
func (*ClusterClient) Pipelined ¶
func (c *ClusterClient) Pipelined(fn func(Pipeliner) 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) RestoreReplace ¶
func (*ClusterClient) SDiff ¶
func (c *ClusterClient) SDiff(keys ...string) *StringSliceCmd
func (*ClusterClient) SDiffStore ¶
func (*ClusterClient) SInter ¶
func (c *ClusterClient) SInter(keys ...string) *StringSliceCmd
func (*ClusterClient) SInterStore ¶
func (*ClusterClient) SMembers ¶
func (c *ClusterClient) SMembers(key string) *StringSliceCmd
Redis `SMEMBERS key` command output as a slice
func (*ClusterClient) SMembersMap ¶
func (c *ClusterClient) SMembersMap(key string) *StringStructMapCmd
Redis `SMEMBERS key` command output as a map
func (*ClusterClient) SPopN ¶
func (c *ClusterClient) SPopN(key string, count int64) *StringSliceCmd
Redis `SPOP key count` command.
func (*ClusterClient) SRandMember ¶
Redis `SRANDMEMBER key` command.
func (*ClusterClient) SRandMemberN ¶
func (c *ClusterClient) SRandMemberN(key string, count int64) *StringSliceCmd
Redis `SRANDMEMBER key count` command.
func (*ClusterClient) SUnion ¶
func (c *ClusterClient) SUnion(keys ...string) *StringSliceCmd
func (*ClusterClient) SUnionStore ¶
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 (*ClusterClient) Set ¶
Redis `SET key value [expiration]` command.
Use expiration for `SETEX`-like behavior. Zero expiration means the key has no expiration time.
func (*ClusterClient) SetNX ¶
Redis `SET key value [expiration] NX` command.
Zero expiration means the key has no expiration time.
func (*ClusterClient) SetXX ¶
Redis `SET key value [expiration] XX` command.
Zero expiration means the key has no expiration time.
func (*ClusterClient) ShutdownNoSave ¶
func (c *ClusterClient) ShutdownNoSave() *StatusCmd
func (*ClusterClient) ShutdownSave ¶
func (c *ClusterClient) ShutdownSave() *StatusCmd
func (*ClusterClient) Sort ¶
func (c *ClusterClient) Sort(key string, sort Sort) *StringSliceCmd
func (*ClusterClient) SortInterfaces ¶
func (*ClusterClient) Subscribe ¶
func (c *ClusterClient) Subscribe(channels ...string) *PubSub
Subscribe subscribes the client to the specified channels. Channels can be omitted to create empty subscription.
func (*ClusterClient) TTL ¶
func (c *ClusterClient) TTL(key string) *DurationCmd
func (*ClusterClient) TxPipeline ¶
func (c *ClusterClient) TxPipeline() Pipeliner
TxPipeline acts like Pipeline, but wraps queued commands with MULTI/EXEC.
func (*ClusterClient) TxPipelined ¶
func (c *ClusterClient) TxPipelined(fn func(Pipeliner) error) ([]Cmder, error)
func (*ClusterClient) Watch ¶
func (c *ClusterClient) Watch(fn func(*Tx) error, keys ...string) error
func (*ClusterClient) ZInterStore ¶
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 (*ClusterClient) ZRangeWithScores ¶
func (*ClusterClient) ZRemRangeByLex ¶
func (*ClusterClient) ZRemRangeByRank ¶
func (*ClusterClient) ZRemRangeByScore ¶
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 (*ClusterClient) ZRevRangeWithScores ¶
type ClusterNode ¶
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-only commands on slave nodes. ReadOnly bool // Allows routing read-only commands to the closest master or slave node. RouteByLatency bool OnConnect func(*Conn) error MaxRetries int MinRetryBackoff time.Duration MaxRetryBackoff time.Duration 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) 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 NewCmdResult ¶
NewCmdResult returns a Cmd initalised with val and err for testing
type Cmdable ¶
type Cmdable interface { Pipeline() Pipeliner Pipelined(fn func(Pipeliner) error) ([]Cmder, error) TxPipelined(fn func(Pipeliner) error) ([]Cmder, error) TxPipeline() Pipeliner ClientGetName() *StringCmd Echo(message interface{}) *StringCmd Ping() *StatusCmd Quit() *StatusCmd Del(keys ...string) *IntCmd Unlink(keys ...string) *IntCmd Dump(key string) *StringCmd Exists(keys ...string) *IntCmd 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(key string) *IntCmd ObjectEncoding(key string) *StringCmd ObjectIdleTime(key 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) *ScanCmd SScan(key string, cursor uint64, match string, count int64) *ScanCmd HScan(key string, cursor uint64, match string, count int64) *ScanCmd ZScan(key string, cursor uint64, match string, count int64) *ScanCmd 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]interface{}) *StatusCmd HSet(key, field string, value interface{}) *BoolCmd HSetNX(key, field string, value interface{}) *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 SMembersMap(key string) *StringStructMapCmd 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 ZLexCount(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 ZRemRangeByLex(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 ConfigGet(parameter string) *SliceCmd ConfigResetStat() *StatusCmd ConfigSet(parameter, value string) *StatusCmd DBSize() *IntCmd FlushAll() *StatusCmd FlushAllAsync() *StatusCmd FlushDB() *StatusCmd FlushDBAsync() *StatusCmd Info(section ...string) *StringCmd LastSave() *IntCmd Save() *StatusCmd Shutdown() *StatusCmd ShutdownSave() *StatusCmd ShutdownNoSave() *StatusCmd SlaveOf(host, port string) *StatusCmd Time() *TimeCmd 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 Publish(channel string, message interface{}) *IntCmd 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 GeoRadiusRO(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd GeoRadiusByMember(key, member string, query *GeoRadiusQuery) *GeoLocationCmd GeoRadiusByMemberRO(key, member string, query *GeoRadiusQuery) *GeoLocationCmd GeoDist(key string, member1, member2, unit string) *FloatCmd GeoHash(key string, members ...string) *StringSliceCmd Command() *CommandsInfoCmd }
type CommandInfo ¶
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) 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 Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
Conn is like Client, but its pool contains single connection.
func (*Conn) ClientSetName ¶
ClientSetName assigns a name to the connection.
func (*Conn) Close ¶
func (c *Conn) 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 (*Conn) TxPipeline ¶
TxPipeline acts like Pipeline, but wraps queued commands with MULTI/EXEC.
func (*Conn) WrapProcess ¶
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.
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) 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 OnConnect func(*Conn) error 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 ¶
NewFloatResult returns a FloatCmd initalised with val and err for testing
type GeoLocation ¶
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) Result ¶
func (cmd *GeoLocationCmd) Result() ([]GeoLocation, error)
func (*GeoLocationCmd) String ¶
func (cmd *GeoLocationCmd) String() string
func (*GeoLocationCmd) Val ¶
func (cmd *GeoLocationCmd) Val() []GeoLocation
type GeoPosCmd ¶
type GeoPosCmd struct {
// contains filtered or unexported fields
}
func NewGeoPosCmd ¶
func NewGeoPosCmd(args ...interface{}) *GeoPosCmd
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 Store string StoreDist string }
GeoRadiusQuery is used with GeoRadius to query geospatial index.
type IntCmd ¶
type IntCmd struct {
// contains filtered or unexported fields
}
func NewIntResult ¶
NewIntResult returns an IntCmd initalised with val and err for testing
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) // Hook that is called when new connection is established. OnConnect func(*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 // Minimum backoff between each retry. // Default is 8 milliseconds; -1 disables backoff. MinRetryBackoff time.Duration // Maximum backoff between each retry. // Default is 512 milliseconds; -1 disables backoff. MaxRetryBackoff time.Duration // 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 ReadTimeout. WriteTimeout time.Duration // Maximum number of socket connections. // Default is 10 connections per every CPU as reported by runtime.NumCPU. 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 5 minutes. IdleTimeout time.Duration // Frequency of idle checks. // Default is 1 minute. // When minus value is set, then idle check is disabled. IdleCheckFrequency time.Duration // TLS Config to use. When set TLS will be negotiated. TLSConfig *tls.Config // contains filtered or unexported fields }
func ParseURL ¶
ParseURL parses an URL into Options that can be used to connect to Redis.
Example ¶
package main import ( "fmt" "time" "github.com/go-redis/redis" ) var client *redis.Client func init() { client = redis.NewClient(&redis.Options{ Addr: ":6379", DialTimeout: 10 * time.Second, ReadTimeout: 30 * time.Second, WriteTimeout: 30 * time.Second, PoolSize: 10, PoolTimeout: 30 * time.Second, }) client.FlushDB() } func main() { opt, err := redis.ParseURL("redis://:qwerty@localhost:6379/1") if err != nil { panic(err) } fmt.Println("addr is", opt.Addr) fmt.Println("db is", opt.DB) fmt.Println("password is", opt.Password) // Create client as usually. _ = redis.NewClient(opt) }
Output: addr is localhost:6379 db is 1 password is qwerty
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.
func (*Pipeline) ClientSetName ¶
ClientSetName assigns a name to the connection.
func (*Pipeline) Exec ¶
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) TxPipeline ¶
type Pong ¶
type Pong struct {
Payload string
}
Pong received as result of a PING command issued by another client.
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.
PubSub automatically resubscribes to the channels and patterns when Redis becomes unavailable.
Example ¶
package main import ( "fmt" "time" "github.com/go-redis/redis" ) var client *redis.Client func main() { pubsub := client.Subscribe("mychannel1") defer pubsub.Close() // Wait for subscription to be created before publishing message. subscr, err := pubsub.ReceiveTimeout(time.Second) if err != nil { panic(err) } fmt.Println(subscr) 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: subscribe: mychannel1 mychannel1 hello
func (*PubSub) Channel ¶
Channel returns a Go channel for concurrently receiving messages. The channel is closed with PubSub. Receive or ReceiveMessage APIs can not be used after channel is created.
func (*PubSub) PSubscribe ¶
Subscribes the client to the given patterns. It returns empty subscription if there are no patterns.
func (*PubSub) PUnsubscribe ¶
Unsubscribes the client from the given patterns, or from all of them if none is given.
func (*PubSub) Receive ¶
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 ¶
package main import ( "fmt" "time" "github.com/go-redis/redis" ) var client *redis.Client func main() { pubsub := client.Subscribe("mychannel2") defer pubsub.Close() for i := 0; i < 2; i++ { // ReceiveTimeout is a low level API. Use ReceiveMessage instead. msgi, err := pubsub.ReceiveTimeout(time.Second) if err != nil { break } switch msg := msgi.(type) { case *redis.Subscription: fmt.Println("subscribed to", msg.Channel) _, err := client.Publish("mychannel2", "hello").Result() if err != nil { panic(err) } case *redis.Message: fmt.Println("received", msg.Payload, "from", msg.Channel) default: panic("unreached") } } // sent message to 1 client // received hello from mychannel2 }
Output:
func (*PubSub) ReceiveMessage ¶
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 ¶
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 ¶
Subscribes the client to the specified channels. It returns empty subscription if there are no channels.
func (*PubSub) Unsubscribe ¶
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 ¶
package main import ( "github.com/go-redis/redis" ) func main() { client := redis.NewRing(&redis.RingOptions{ Addrs: map[string]string{ "shard1": ":7000", "shard2": ":7001", "shard3": ":7002", }, }) client.Ping() }
Output:
func (*Ring) BRPopLPush ¶
func (*Ring) BgRewriteAOF ¶
func (c *Ring) BgRewriteAOF() *StatusCmd
func (*Ring) ClientGetName ¶
func (c *Ring) ClientGetName() *StringCmd
ClientGetName returns the name of the connection.
func (*Ring) ClientKill ¶
func (*Ring) ClientList ¶
func (c *Ring) ClientList() *StringCmd
func (*Ring) ClientPause ¶
func (*Ring) Close ¶
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 (*Ring) ClusterAddSlotsRange ¶
func (*Ring) ClusterCountFailureReports ¶
func (*Ring) ClusterCountKeysInSlot ¶
func (*Ring) ClusterDelSlots ¶
func (*Ring) ClusterDelSlotsRange ¶
func (*Ring) ClusterFailover ¶
func (c *Ring) ClusterFailover() *StatusCmd
func (*Ring) ClusterForget ¶
func (*Ring) ClusterInfo ¶
func (c *Ring) ClusterInfo() *StringCmd
func (*Ring) ClusterKeySlot ¶
func (*Ring) ClusterMeet ¶
func (*Ring) ClusterNodes ¶
func (c *Ring) ClusterNodes() *StringCmd
func (*Ring) ClusterReplicate ¶
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) ConfigResetStat ¶
func (c *Ring) ConfigResetStat() *StatusCmd
func (*Ring) DebugObject ¶
func (*Ring) FlushAllAsync ¶
func (c *Ring) FlushAllAsync() *StatusCmd
func (*Ring) FlushDBAsync ¶
func (c *Ring) FlushDBAsync() *StatusCmd
func (*Ring) ForEachShard ¶
ForEachShard concurrently calls the fn on each live shard in the ring. It returns the first error if any.
func (*Ring) GeoAdd ¶
func (c *Ring) GeoAdd(key string, geoLocation ...*GeoLocation) *IntCmd
func (*Ring) GeoHash ¶
func (c *Ring) GeoHash(key string, members ...string) *StringSliceCmd
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) GeoRadiusByMemberRO ¶
func (c *Ring) GeoRadiusByMemberRO(key, member string, query *GeoRadiusQuery) *GeoLocationCmd
func (*Ring) GeoRadiusRO ¶
func (c *Ring) GeoRadiusRO(key string, longitude, latitude float64, query *GeoRadiusQuery) *GeoLocationCmd
func (*Ring) HGetAll ¶
func (c *Ring) HGetAll(key string) *StringStringMapCmd
func (*Ring) HIncrByFloat ¶
func (*Ring) HKeys ¶
func (c *Ring) HKeys(key string) *StringSliceCmd
func (*Ring) HVals ¶
func (c *Ring) HVals(key string) *StringSliceCmd
func (*Ring) IncrByFloat ¶
func (*Ring) Keys ¶
func (c *Ring) Keys(pattern string) *StringSliceCmd
func (*Ring) LInsertAfter ¶
func (*Ring) LInsertBefore ¶
func (*Ring) LRange ¶
func (c *Ring) LRange(key string, start, stop int64) *StringSliceCmd
func (*Ring) ObjectEncoding ¶
func (*Ring) ObjectIdleTime ¶
func (c *Ring) ObjectIdleTime(key string) *DurationCmd
func (*Ring) ObjectRefCount ¶
func (*Ring) Options ¶
func (c *Ring) Options() *RingOptions
Options returns read-only Options that were used to create the client.
func (*Ring) PSubscribe ¶
PSubscribe subscribes the client to the given patterns.
func (*Ring) PTTL ¶
func (c *Ring) PTTL(key string) *DurationCmd
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) RestoreReplace ¶
func (*Ring) SDiff ¶
func (c *Ring) SDiff(keys ...string) *StringSliceCmd
func (*Ring) SDiffStore ¶
func (*Ring) SInter ¶
func (c *Ring) SInter(keys ...string) *StringSliceCmd
func (*Ring) SInterStore ¶
func (*Ring) SMembers ¶
func (c *Ring) SMembers(key string) *StringSliceCmd
Redis `SMEMBERS key` command output as a slice
func (*Ring) SMembersMap ¶
func (c *Ring) SMembersMap(key string) *StringStructMapCmd
Redis `SMEMBERS key` command output as a map
func (*Ring) SPopN ¶
func (c *Ring) SPopN(key string, count int64) *StringSliceCmd
Redis `SPOP key count` command.
func (*Ring) SRandMember ¶
Redis `SRANDMEMBER key` command.
func (*Ring) SRandMemberN ¶
func (c *Ring) SRandMemberN(key string, count int64) *StringSliceCmd
Redis `SRANDMEMBER key count` command.
func (*Ring) SUnion ¶
func (c *Ring) SUnion(keys ...string) *StringSliceCmd
func (*Ring) SUnionStore ¶
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 (*Ring) Set ¶
Redis `SET key value [expiration]` command.
Use expiration for `SETEX`-like behavior. Zero expiration means the key has no expiration time.
func (*Ring) SetNX ¶
Redis `SET key value [expiration] NX` command.
Zero expiration means the key has no expiration time.
func (*Ring) SetXX ¶
Redis `SET key value [expiration] XX` command.
Zero expiration means the key has no expiration time.
func (*Ring) ShutdownNoSave ¶
func (c *Ring) ShutdownNoSave() *StatusCmd
func (*Ring) ShutdownSave ¶
func (c *Ring) ShutdownSave() *StatusCmd
func (*Ring) Sort ¶
func (c *Ring) Sort(key string, sort Sort) *StringSliceCmd
func (*Ring) SortInterfaces ¶
func (*Ring) TTL ¶
func (c *Ring) TTL(key string) *DurationCmd
func (*Ring) TxPipeline ¶
func (*Ring) ZInterStore ¶
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 (*Ring) ZRangeWithScores ¶
func (*Ring) ZRemRangeByLex ¶
func (*Ring) ZRemRangeByRank ¶
func (*Ring) ZRemRangeByScore ¶
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 (*Ring) ZRevRangeWithScores ¶
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 OnConnect func(*Conn) error DB int Password string MaxRetries int MinRetryBackoff time.Duration MaxRetryBackoff time.Duration 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 NewScanCmdResult ¶
NewScanCmdResult returns a ScanCmd initalised with val and err for testing
func (*ScanCmd) Iterator ¶
func (cmd *ScanCmd) Iterator() *ScanIterator
Iterator creates a new ScanIterator.
Example ¶
package main import ( "fmt" "github.com/go-redis/redis" ) var client *redis.Client func main() { iter := client.Scan(0, "", 0).Iterator() for iter.Next() { fmt.Println(iter.Val()) } if err := iter.Err(); err != nil { panic(err) } }
Output:
type ScanIterator ¶
type ScanIterator struct {
// 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 ¶
package main import ( "fmt" "github.com/go-redis/redis" ) var client *redis.Client func main() { 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 Script ¶
type Script struct {
// contains filtered or unexported fields
}
Example ¶
package main import ( "fmt" "github.com/go-redis/redis" ) var client *redis.Client func main() { 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 (*Script) Exists ¶
func (s *Script) Exists(c scripter) *BoolSliceCmd
type SliceCmd ¶
type SliceCmd struct {
// contains filtered or unexported fields
}
func NewSliceCmd ¶
func NewSliceCmd(args ...interface{}) *SliceCmd
func NewSliceResult ¶
NewSliceResult returns a SliceCmd initalised with val and err for testing
type StatefulCmdable ¶
type StatusCmd ¶
type StatusCmd struct {
// contains filtered or unexported fields
}
func NewStatusCmd ¶
func NewStatusCmd(args ...interface{}) *StatusCmd
func NewStatusResult ¶
NewStatusResult returns a StatusCmd initalised with val and err for testing
type StringCmd ¶
type StringCmd struct {
// contains filtered or unexported fields
}
func NewStringCmd ¶
func NewStringCmd(args ...interface{}) *StringCmd
func NewStringResult ¶
NewStringResult returns a StringCmd initalised with val and err for testing
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) 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) Result ¶
func (cmd *StringSliceCmd) Result() ([]string, error)
func (*StringSliceCmd) ScanSlice ¶
func (cmd *StringSliceCmd) ScanSlice(container interface{}) 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) 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 StringStructMapCmd ¶
type StringStructMapCmd struct {
// contains filtered or unexported fields
}
func NewStringStructMapCmd ¶
func NewStringStructMapCmd(args ...interface{}) *StringStructMapCmd
func (*StringStructMapCmd) Result ¶
func (cmd *StringStructMapCmd) Result() (map[string]struct{}, error)
func (*StringStructMapCmd) String ¶
func (cmd *StringStructMapCmd) String() string
func (*StringStructMapCmd) Val ¶
func (cmd *StringStructMapCmd) Val() map[string]struct{}
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 TimeCmd ¶
type TimeCmd struct {
// contains filtered or unexported fields
}
func NewTimeCmd ¶
func NewTimeCmd(args ...interface{}) *TimeCmd
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) ClientSetName ¶
ClientSetName assigns a name to the connection.
func (*Tx) Pipelined ¶
Pipelined executes commands queued in the fn 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) TxPipeline ¶
func (*Tx) WrapProcess ¶
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.
type UniversalClient ¶
type UniversalClient interface { Cmdable Process(cmd Cmder) error Subscribe(channels ...string) *PubSub PSubscribe(channels ...string) *PubSub Close() error }
UniversalClient is an abstract client which - based on the provided options - can connect to either clusters, or sentinel-backed failover instances or simple single-instance servers. This can be useful for testing cluster-specific applications locally.
func NewUniversalClient ¶
func NewUniversalClient(opts *UniversalOptions) UniversalClient
NewUniversalClient returns a new multi client. The type of client returned depends on the following three conditions:
1. if a MasterName is passed a sentinel-backed FailoverClient will be returned 2. if the number of Addrs is two or more, a ClusterClient will be returned 3. otherwise, a single-node redis Client will be returned.
Example (Cluster) ¶
package main import ( "github.com/go-redis/redis" ) func main() { client := redis.NewUniversalClient(&redis.UniversalOptions{ Addrs: []string{":7000", ":7001", ":7002", ":7003", ":7004", ":7005"}, }) defer client.Close() client.Ping() }
Output:
Example (Failover) ¶
package main import ( "github.com/go-redis/redis" ) func main() { client := redis.NewUniversalClient(&redis.UniversalOptions{ MasterName: "master", Addrs: []string{":26379"}, }) defer client.Close() client.Ping() }
Output:
Example (Simple) ¶
package main import ( "github.com/go-redis/redis" ) func main() { client := redis.NewUniversalClient(&redis.UniversalOptions{ Addrs: []string{":6379"}, }) defer client.Close() client.Ping() }
Output:
type UniversalOptions ¶
type UniversalOptions struct { // Either a single address or a seed list of host:port addresses // of cluster/sentinel nodes. Addrs []string // The sentinel master name. // Only failover clients. MasterName string // Database to be selected after connecting to the server. // Only single-node and failover clients. DB int // Enables read only queries on slave nodes. ReadOnly bool MaxRedirects int RouteByLatency bool MaxRetries int Password string DialTimeout time.Duration ReadTimeout time.Duration WriteTimeout time.Duration PoolSize int PoolTimeout time.Duration IdleTimeout time.Duration IdleCheckFrequency time.Duration }
UniversalOptions information is required by UniversalClient to establish connections.
type ZSliceCmd ¶
type ZSliceCmd struct {
// contains filtered or unexported fields
}
func NewZSliceCmd ¶
func NewZSliceCmd(args ...interface{}) *ZSliceCmd
func NewZSliceCmdResult ¶
NewZSliceCmdResult returns a ZSliceCmd initalised with val and err for testing