redis
packagemoduleThis package is not in the latest version of its module.
Details
Valid go.mod file
The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable license
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Tagged version
Modules with tagged versions give importers more predictable builds.
Stable version
When a project reaches major version v1 it is considered stable.
- Learn more about best practices
Repository
Links
README¶
Redis client for Golang
Supports:
- Redis 3 commands except QUIT, MONITOR, SLOWLOG and SYNC.
- Automatic connection pooling withcircuit breaker support.
- Pub/Sub.
- Transactions.
- Pipeline andTxPipeline.
- Scripting.
- Timeouts.
- Redis Sentinel.
- Redis Cluster.
- Cluster of Redis Servers without using cluster mode and Redis Sentinel.
- Ring.
- Instrumentation.
- Cache friendly.
- Rate limiting.
- Distributed Locks.
API docs:https://godoc.org/github.com/go-redis/redis.Examples:https://godoc.org/github.com/go-redis/redis#pkg-examples.
Installation
Install:
go get -u github.com/go-redis/redisImport:
import "github.com/go-redis/redis"Quickstart
func ExampleNewClient() {client := redis.NewClient(&redis.Options{Addr: "localhost:6379",Password: "", // no password setDB: 0, // use default DB})pong, err := client.Ping().Result()fmt.Println(pong, err)// Output: PONG <nil>}func ExampleClient() {err := client.Set("key", "value", 0).Err()if err != nil {panic(err)}val, err := client.Get("key").Result()if err != nil {panic(err)}fmt.Println("key", val)val2, err := client.Get("key2").Result()if err == redis.Nil {fmt.Println("key2 does not exist")} else if err != nil {panic(err)} else {fmt.Println("key2", val2)}// Output: key value// key2 does not exist}Howto
Please go throughexamples to get an idea how to use this package.
Look and feel
Some corner cases:
// SET key value EX 10 NXset, err := client.SetNX("key", "value", 10*time.Second).Result()// SORT list LIMIT 0 2 ASCvals, err := client.Sort("list", redis.Sort{Offset: 0, Count: 2, Order: "ASC"}).Result()// ZRANGEBYSCORE zset -inf +inf WITHSCORES LIMIT 0 2vals, err := client.ZRangeByScoreWithScores("zset", redis.ZRangeBy{Min: "-inf",Max: "+inf",Offset: 0,Count: 2,}).Result()// ZINTERSTORE out 2 zset1 zset2 WEIGHTS 2 3 AGGREGATE SUMvals, err := client.ZInterStore("out", redis.ZStore{Weights: []int64{2, 3}}, "zset1", "zset2").Result()// EVAL "return {KEYS[1],ARGV[1]}" 1 "key" "hello"vals, err := client.Eval("return {KEYS[1],ARGV[1]}", []string{"key"}, "hello").Result()Benchmark
go-redis vs redigo:
BenchmarkSetGoRedis10Conns64Bytes-4 200000 7621 ns/op 210 B/op 6 allocs/opBenchmarkSetGoRedis100Conns64Bytes-4 200000 7554 ns/op 210 B/op 6 allocs/opBenchmarkSetGoRedis10Conns1KB-4 200000 7697 ns/op 210 B/op 6 allocs/opBenchmarkSetGoRedis100Conns1KB-4 200000 7688 ns/op 210 B/op 6 allocs/opBenchmarkSetGoRedis10Conns10KB-4 200000 9214 ns/op 210 B/op 6 allocs/opBenchmarkSetGoRedis100Conns10KB-4 200000 9181 ns/op 210 B/op 6 allocs/opBenchmarkSetGoRedis10Conns1MB-4 2000 583242 ns/op 2337 B/op 6 allocs/opBenchmarkSetGoRedis100Conns1MB-4 2000 583089 ns/op 2338 B/op 6 allocs/opBenchmarkSetRedigo10Conns64Bytes-4 200000 7576 ns/op 208 B/op 7 allocs/opBenchmarkSetRedigo100Conns64Bytes-4 200000 7782 ns/op 208 B/op 7 allocs/opBenchmarkSetRedigo10Conns1KB-4 200000 7958 ns/op 208 B/op 7 allocs/opBenchmarkSetRedigo100Conns1KB-4 200000 7725 ns/op 208 B/op 7 allocs/opBenchmarkSetRedigo10Conns10KB-4 100000 18442 ns/op 208 B/op 7 allocs/opBenchmarkSetRedigo100Conns10KB-4 100000 18818 ns/op 208 B/op 7 allocs/opBenchmarkSetRedigo10Conns1MB-4 2000 668829 ns/op 226 B/op 7 allocs/opBenchmarkSetRedigo100Conns1MB-4 2000 679542 ns/op 226 B/op 7 allocs/opRedis Cluster:
BenchmarkRedisPing-4 200000 6983 ns/op 116 B/op 4 allocs/opBenchmarkRedisClusterPing-4 100000 11535 ns/op 117 B/op 4 allocs/opSee also
Documentation¶
Overview¶
Package redis implements a Redis client.
Example (CustomCommand)¶
package mainimport ("fmt""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {Get := func(redisdb *redis.Client, key string) *redis.StringCmd {cmd := redis.NewStringCmd("get", key)redisdb.Process(cmd)return cmd}v, err := Get(redisdb, "key_does_not_exist").Result()fmt.Printf("%q %s", v, err)}Output:"" redis: nil
Example (CustomCommand2)¶
package mainimport ("fmt""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {v, err := redisdb.Do("get", "key_does_not_exist").String()fmt.Printf("%q %s", v, err)}Output:"" redis: nil
Example (Instrumentation)¶
package mainimport ("fmt""github.com/go-redis/redis")func main() {redisdb := redis.NewClient(&redis.Options{Addr: ":6379",})redisdb.WrapProcess(func(old func(cmd redis.Cmder) error) func(cmd redis.Cmder) error {return func(cmd redis.Cmder) error {fmt.Printf("starting processing: <%s>\n", cmd)err := old(cmd)fmt.Printf("finished processing: <%s>\n", cmd)return err}})redisdb.Ping()}Output:starting processing: <ping: >finished processing: <ping: PONG>
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) BZPopMax(timeout time.Duration, keys ...string) *ZWithKeyCmd
- func (c *Client) BZPopMin(timeout time.Duration, keys ...string) *ZWithKeyCmd
- 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) ClientID() *IntCmd
- func (c *Client) ClientKill(ipPort string) *StatusCmd
- func (c *Client) ClientKillByFilter(keys ...string) *IntCmd
- func (c *Client) ClientList() *StringCmd
- func (c *Client) ClientPause(dur time.Duration) *BoolCmd
- func (c *Client) ClientUnblock(id int64) *IntCmd
- func (c *Client) ClientUnblockWithError(id int64) *IntCmd
- 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) ClusterGetKeysInSlot(slot int, count int) *StringSliceCmd
- 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) ConfigRewrite() *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) Do(args ...interface{}) *Cmd
- 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) MemoryUsage(key string, samples ...int) *IntCmd
- 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) ReadOnly() *StatusCmd
- func (c *Client) ReadWrite() *StatusCmd
- 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(hashes ...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) SetLimiter(l Limiter) *Client
- 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) SortStore(key, store string, sort *Sort) *IntCmd
- 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) Touch(keys ...string) *IntCmd
- 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) WrapProcessPipeline(fn func(oldProcess func([]Cmder) error) func([]Cmder) error)
- func (c *Client) XAck(stream, group string, ids ...string) *IntCmd
- func (c *Client) XAdd(a *XAddArgs) *StringCmd
- func (c *Client) XClaim(a *XClaimArgs) *XMessageSliceCmd
- func (c *Client) XClaimJustID(a *XClaimArgs) *StringSliceCmd
- func (c *Client) XDel(stream string, ids ...string) *IntCmd
- func (c *Client) XGroupCreate(stream, group, start string) *StatusCmd
- func (c *Client) XGroupCreateMkStream(stream, group, start string) *StatusCmd
- func (c *Client) XGroupDelConsumer(stream, group, consumer string) *IntCmd
- func (c *Client) XGroupDestroy(stream, group string) *IntCmd
- func (c *Client) XGroupSetID(stream, group, start string) *StatusCmd
- func (c *Client) XLen(stream string) *IntCmd
- func (c *Client) XPending(stream, group string) *XPendingCmd
- func (c *Client) XPendingExt(a *XPendingExtArgs) *XPendingExtCmd
- func (c *Client) XRange(stream, start, stop string) *XMessageSliceCmd
- func (c *Client) XRangeN(stream, start, stop string, count int64) *XMessageSliceCmd
- func (c *Client) XRead(a *XReadArgs) *XStreamSliceCmd
- func (c *Client) XReadGroup(a *XReadGroupArgs) *XStreamSliceCmd
- func (c *Client) XReadStreams(streams ...string) *XStreamSliceCmd
- func (c *Client) XRevRange(stream, start, stop string) *XMessageSliceCmd
- func (c *Client) XRevRangeN(stream, start, stop string, count int64) *XMessageSliceCmd
- func (c *Client) XTrim(key string, maxLen int64) *IntCmd
- func (c *Client) XTrimApprox(key string, maxLen int64) *IntCmd
- 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) ZPopMax(key string, count ...int64) *ZSliceCmd
- func (c *Client) ZPopMin(key string, count ...int64) *ZSliceCmd
- 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) BZPopMax(timeout time.Duration, keys ...string) *ZWithKeyCmd
- func (c *ClusterClient) BZPopMin(timeout time.Duration, keys ...string) *ZWithKeyCmd
- 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) ClientID() *IntCmd
- func (c *ClusterClient) ClientKill(ipPort string) *StatusCmd
- func (c *ClusterClient) ClientKillByFilter(keys ...string) *IntCmd
- func (c *ClusterClient) ClientList() *StringCmd
- func (c *ClusterClient) ClientPause(dur time.Duration) *BoolCmd
- func (c *ClusterClient) ClientUnblock(id int64) *IntCmd
- func (c *ClusterClient) ClientUnblockWithError(id int64) *IntCmd
- 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) ClusterGetKeysInSlot(slot int, count int) *StringSliceCmd
- 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) ConfigRewrite() *StatusCmd
- func (c *ClusterClient) ConfigSet(parameter, value string) *StatusCmd
- func (c *ClusterClient) Context() context.Context
- 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) Do(args ...interface{}) *Cmd
- 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) MemoryUsage(key string, samples ...int) *IntCmd
- 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) ReadOnly() *StatusCmd
- func (c *ClusterClient) ReadWrite() *StatusCmd
- func (c *ClusterClient) ReloadState() error
- 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(hashes ...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) SortStore(key, store string, sort *Sort) *IntCmd
- 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) Touch(keys ...string) *IntCmd
- 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) WithContext(ctx context.Context) *ClusterClient
- func (c *ClusterClient) WrapProcess(fn func(oldProcess func(Cmder) error) func(Cmder) error)
- func (c *ClusterClient) WrapProcessPipeline(fn func(oldProcess func([]Cmder) error) func([]Cmder) error)
- func (c *ClusterClient) XAck(stream, group string, ids ...string) *IntCmd
- func (c *ClusterClient) XAdd(a *XAddArgs) *StringCmd
- func (c *ClusterClient) XClaim(a *XClaimArgs) *XMessageSliceCmd
- func (c *ClusterClient) XClaimJustID(a *XClaimArgs) *StringSliceCmd
- func (c *ClusterClient) XDel(stream string, ids ...string) *IntCmd
- func (c *ClusterClient) XGroupCreate(stream, group, start string) *StatusCmd
- func (c *ClusterClient) XGroupCreateMkStream(stream, group, start string) *StatusCmd
- func (c *ClusterClient) XGroupDelConsumer(stream, group, consumer string) *IntCmd
- func (c *ClusterClient) XGroupDestroy(stream, group string) *IntCmd
- func (c *ClusterClient) XGroupSetID(stream, group, start string) *StatusCmd
- func (c *ClusterClient) XLen(stream string) *IntCmd
- func (c *ClusterClient) XPending(stream, group string) *XPendingCmd
- func (c *ClusterClient) XPendingExt(a *XPendingExtArgs) *XPendingExtCmd
- func (c *ClusterClient) XRange(stream, start, stop string) *XMessageSliceCmd
- func (c *ClusterClient) XRangeN(stream, start, stop string, count int64) *XMessageSliceCmd
- func (c *ClusterClient) XRead(a *XReadArgs) *XStreamSliceCmd
- func (c *ClusterClient) XReadGroup(a *XReadGroupArgs) *XStreamSliceCmd
- func (c *ClusterClient) XReadStreams(streams ...string) *XStreamSliceCmd
- func (c *ClusterClient) XRevRange(stream, start, stop string) *XMessageSliceCmd
- func (c *ClusterClient) XRevRangeN(stream, start, stop string, count int64) *XMessageSliceCmd
- func (c *ClusterClient) XTrim(key string, maxLen int64) *IntCmd
- func (c *ClusterClient) XTrimApprox(key string, maxLen int64) *IntCmd
- 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) ZPopMax(key string, count ...int64) *ZSliceCmd
- func (c *ClusterClient) ZPopMin(key string, count ...int64) *ZSliceCmd
- 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
- func (cmd *Cmd) Args() []interface{}
- func (cmd *Cmd) Bool() (bool, error)
- func (cmd *Cmd) Err() error
- func (cmd *Cmd) Float32() (float32, error)
- func (cmd *Cmd) Float64() (float64, error)
- func (cmd *Cmd) Int() (int, error)
- func (cmd *Cmd) Int64() (int64, error)
- func (cmd *Cmd) Name() string
- func (cmd *Cmd) Result() (interface{}, error)
- func (cmd *Cmd) String() (string, error)
- func (cmd *Cmd) Uint64() (uint64, error)
- func (cmd *Cmd) Val() interface{}
- type Cmdable
- type Cmder
- type CommandInfo
- type CommandsInfoCmd
- type Conn
- func (c *Conn) Auth(password string) *StatusCmd
- func (c *Conn) ClientSetName(name string) *BoolCmd
- func (c *Conn) Close() error
- func (c *Conn) Do(args ...interface{}) *Cmd
- 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) Select(index int) *StatusCmd
- func (c *Conn) String() string
- func (c *Conn) SwapDB(index1, index2 int) *StatusCmd
- 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)
- func (c *Conn) WrapProcessPipeline(fn func(oldProcess func([]Cmder) error) func([]Cmder) error)
- type DurationCmd
- type FailoverOptions
- type FloatCmd
- type GeoLocation
- type GeoLocationCmd
- type GeoPos
- type GeoPosCmd
- type GeoRadiusQuery
- type Hash
- type IntCmd
- type Limiter
- 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) Do(args ...interface{}) *Cmd
- 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) Select(index int) *StatusCmd
- func (c *Pipeline) SwapDB(index1, index2 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) ChannelSize(size int) <-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) String() string
- 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) BZPopMax(timeout time.Duration, keys ...string) *ZWithKeyCmd
- func (c *Ring) BZPopMin(timeout time.Duration, keys ...string) *ZWithKeyCmd
- 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) ClientID() *IntCmd
- func (c *Ring) ClientKill(ipPort string) *StatusCmd
- func (c *Ring) ClientKillByFilter(keys ...string) *IntCmd
- func (c *Ring) ClientList() *StringCmd
- func (c *Ring) ClientPause(dur time.Duration) *BoolCmd
- func (c *Ring) ClientUnblock(id int64) *IntCmd
- func (c *Ring) ClientUnblockWithError(id int64) *IntCmd
- 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) ClusterGetKeysInSlot(slot int, count int) *StringSliceCmd
- 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) ConfigRewrite() *StatusCmd
- func (c *Ring) ConfigSet(parameter, value string) *StatusCmd
- func (c *Ring) Context() context.Context
- 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) Do(args ...interface{}) *Cmd
- 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) Len() int
- func (c *Ring) MGet(keys ...string) *SliceCmd
- func (c *Ring) MSet(pairs ...interface{}) *StatusCmd
- func (c *Ring) MSetNX(pairs ...interface{}) *BoolCmd
- func (c *Ring) MemoryUsage(key string, samples ...int) *IntCmd
- 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) ReadOnly() *StatusCmd
- func (c *Ring) ReadWrite() *StatusCmd
- 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(hashes ...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) SortStore(key, store string, sort *Sort) *IntCmd
- 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) Touch(keys ...string) *IntCmd
- 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) Watch(fn func(*Tx) error, keys ...string) error
- func (c *Ring) WithContext(ctx context.Context) *Ring
- func (c *Ring) WrapProcess(fn func(oldProcess func(cmd Cmder) error) func(cmd Cmder) error)
- func (c *Ring) WrapProcessPipeline(fn func(oldProcess func([]Cmder) error) func([]Cmder) error)
- func (c *Ring) XAck(stream, group string, ids ...string) *IntCmd
- func (c *Ring) XAdd(a *XAddArgs) *StringCmd
- func (c *Ring) XClaim(a *XClaimArgs) *XMessageSliceCmd
- func (c *Ring) XClaimJustID(a *XClaimArgs) *StringSliceCmd
- func (c *Ring) XDel(stream string, ids ...string) *IntCmd
- func (c *Ring) XGroupCreate(stream, group, start string) *StatusCmd
- func (c *Ring) XGroupCreateMkStream(stream, group, start string) *StatusCmd
- func (c *Ring) XGroupDelConsumer(stream, group, consumer string) *IntCmd
- func (c *Ring) XGroupDestroy(stream, group string) *IntCmd
- func (c *Ring) XGroupSetID(stream, group, start string) *StatusCmd
- func (c *Ring) XLen(stream string) *IntCmd
- func (c *Ring) XPending(stream, group string) *XPendingCmd
- func (c *Ring) XPendingExt(a *XPendingExtArgs) *XPendingExtCmd
- func (c *Ring) XRange(stream, start, stop string) *XMessageSliceCmd
- func (c *Ring) XRangeN(stream, start, stop string, count int64) *XMessageSliceCmd
- func (c *Ring) XRead(a *XReadArgs) *XStreamSliceCmd
- func (c *Ring) XReadGroup(a *XReadGroupArgs) *XStreamSliceCmd
- func (c *Ring) XReadStreams(streams ...string) *XStreamSliceCmd
- func (c *Ring) XRevRange(stream, start, stop string) *XMessageSliceCmd
- func (c *Ring) XRevRangeN(stream, start, stop string, count int64) *XMessageSliceCmd
- func (c *Ring) XTrim(key string, maxLen int64) *IntCmd
- func (c *Ring) XTrimApprox(key string, maxLen int64) *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) ZPopMax(key string, count ...int64) *ZSliceCmd
- func (c *Ring) ZPopMin(key string, count ...int64) *ZSliceCmd
- 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 SentinelClient
- func (c *SentinelClient) Close() error
- func (c *SentinelClient) Do(args ...interface{}) *Cmd
- func (c *SentinelClient) Failover(name string) *StatusCmd
- func (c *SentinelClient) FlushConfig() *StatusCmd
- func (c *SentinelClient) GetMasterAddrByName(name string) *StringSliceCmd
- func (c *SentinelClient) Master(name string) *StringStringMapCmd
- func (c *SentinelClient) PSubscribe(channels ...string) *PubSub
- func (c *SentinelClient) Process(cmd Cmder) error
- func (c *SentinelClient) Reset(pattern string) *IntCmd
- func (c *SentinelClient) Sentinels(name string) *SliceCmd
- func (c *SentinelClient) String() string
- func (c *SentinelClient) Subscribe(channels ...string) *PubSub
- func (c *SentinelClient) WrapProcess(fn func(oldProcess func(cmd Cmder) error) func(cmd Cmder) error)
- func (c *SentinelClient) WrapProcessPipeline(fn func(oldProcess func([]Cmder) error) func([]Cmder) error)
- 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) Float32() (float32, error)
- func (cmd *StringCmd) Float64() (float64, error)
- func (cmd *StringCmd) Int() (int, 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) Do(args ...interface{}) *Cmd
- 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) Select(index int) *StatusCmd
- func (c *Tx) String() string
- func (c *Tx) SwapDB(index1, index2 int) *StatusCmd
- 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)
- func (c *Tx) WrapProcessPipeline(fn func(oldProcess func([]Cmder) error) func([]Cmder) error)
- type UniversalClient
- type UniversalOptions
- type XAddArgs
- type XClaimArgs
- type XMessage
- type XMessageSliceCmd
- type XPending
- type XPendingCmd
- type XPendingExt
- type XPendingExtArgs
- type XPendingExtCmd
- type XReadArgs
- type XReadGroupArgs
- type XStream
- type XStreamSliceCmd
- type Z
- type ZRangeBy
- type ZSliceCmd
- type ZStore
- type ZWithKey
- type ZWithKeyCmd
Examples¶
- Package (CustomCommand)
- Package (CustomCommand2)
- Package (Instrumentation)
- Client
- Client.BLPop
- Client.Incr
- Client.Pipeline
- Client.Pipelined
- Client.Scan
- Client.Set
- Client.TxPipeline
- Client.TxPipelined
- Client.Watch
- NewClient
- NewClusterClient
- NewClusterClient (ManualSetup)
- NewFailoverClient
- NewRing
- NewUniversalClient (Cluster)
- NewUniversalClient (Failover)
- NewUniversalClient (Simple)
- ParseURL
- Pipeline (Instrumentation)
- PubSub
- PubSub.Receive
- ScanCmd.Iterator
- ScanIterator
- Script
Constants¶
const Nil =proto.NilNil reply Redis returns when key does not exist.
const TxFailedErr =proto.RedisError("redis: transaction failed")TxFailedErr transaction redis failed.
Variables¶
This section is empty.
Functions¶
Types¶
typeBoolCmd¶
type BoolCmd struct {// contains filtered or unexported fields}funcNewBoolCmd¶
func NewBoolCmd(args ...interface{}) *BoolCmdfuncNewBoolResult¶
NewBoolResult returns a BoolCmd initialised with val and err for testing
typeBoolSliceCmd¶
type BoolSliceCmd struct {// contains filtered or unexported fields}funcNewBoolSliceCmd¶
func NewBoolSliceCmd(args ...interface{}) *BoolSliceCmdfuncNewBoolSliceResult¶
func NewBoolSliceResult(val []bool, errerror) *BoolSliceCmd
NewBoolSliceResult returns a BoolSliceCmd initialised 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
typeClient¶
type Client struct {// contains filtered or unexported fields}Client is a Redis client representing a pool of zero or moreunderlying connections. It's safe for concurrent use by multiplegoroutines.
Example¶
package mainimport ("fmt""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {err := redisdb.Set("key", "value", 0).Err()if err != nil {panic(err)}val, err := redisdb.Get("key").Result()if err != nil {panic(err)}fmt.Println("key", val)val2, err := redisdb.Get("missing_key").Result()if err == redis.Nil {fmt.Println("missing_key does not exist")} else if err != nil {panic(err)} else {fmt.Println("missing_key", val2)}}Output:key valuemissing_key does not exist
funcNewClient¶
NewClient returns a client to the Redis Server specified by Options.
Example¶
package mainimport ("fmt""github.com/go-redis/redis")func main() {redisdb := redis.NewClient(&redis.Options{Addr: "localhost:6379", // use default AddrPassword: "", // no password setDB: 0, // use default DB})pong, err := redisdb.Ping().Result()fmt.Println(pong, err)}Output:PONG <nil>
funcNewFailoverClient¶
func NewFailoverClient(failoverOpt *FailoverOptions) *Client
NewFailoverClient returns a Redis client that uses Redis Sentinelfor automatic failover. It's safe for concurrent use by multiplegoroutines.
Example¶
package mainimport ("github.com/go-redis/redis")func main() {// See http://redis.io/topics/sentinel for instructions how to// setup Redis Sentinel.redisdb := redis.NewFailoverClient(&redis.FailoverOptions{MasterName: "master",SentinelAddrs: []string{":26379"},})redisdb.Ping()}func (*Client)BLPop¶
func (c *Client) BLPop(timeouttime.Duration, keys ...string) *StringSliceCmd
Example¶
package mainimport ("fmt""time""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {if err := redisdb.RPush("queue", "message").Err(); err != nil {panic(err)}// use `redisdb.BLPop(0, "queue")` for infinite waiting timeresult, err := redisdb.BLPop(1*time.Second, "queue").Result()if err != nil {panic(err)}fmt.Println(result[0], result[1])}Output:queue message
func (*Client)BRPopLPush¶
func (*Client)BZPopMax¶
func (c *Client) BZPopMax(timeouttime.Duration, keys ...string) *ZWithKeyCmd
Redis `BZPOPMAX key [key ...] timeout` command.
func (*Client)BZPopMin¶
func (c *Client) BZPopMin(timeouttime.Duration, keys ...string) *ZWithKeyCmd
Redis `BZPOPMIN key [key ...] timeout` command.
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)ClientKillByFilter¶
ClientKillByFilter is new style synx, while the ClientKill is oldCLIENT KILL <option> [value] ... <option> [value]
func (*Client)ClientList¶
func (c *Client) ClientList() *StringCmd
func (*Client)ClientPause¶
func (*Client)ClientUnblock¶
func (*Client)ClientUnblockWithError¶
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 belong-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)ClusterGetKeysInSlot¶
func (c *Client) ClusterGetKeysInSlot(slotint, countint) *StringSliceCmd
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(nodeIDstring) *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)ConfigRewrite¶
func (c *Client) ConfigRewrite() *StatusCmd
func (*Client)DebugObject¶
func (*Client)Do¶
func (c *Client) Do(args ...interface{}) *CmdDo creates a Cmd from the args and processes the cmd.
func (*Client)FlushAllAsync¶
func (c *Client) FlushAllAsync() *StatusCmd
func (*Client)FlushDBAsync¶
func (c *Client) FlushDBAsync() *StatusCmd
func (*Client)GeoAdd¶
func (c *Client) GeoAdd(keystring, geoLocation ...*GeoLocation) *IntCmd
func (*Client)GeoHash¶
func (c *Client) GeoHash(keystring, members ...string) *StringSliceCmd
func (*Client)GeoRadius¶
func (c *Client) GeoRadius(keystring, longitude, latitudefloat64, query *GeoRadiusQuery) *GeoLocationCmd
func (*Client)GeoRadiusByMember¶
func (c *Client) GeoRadiusByMember(key, memberstring, query *GeoRadiusQuery) *GeoLocationCmd
func (*Client)GeoRadiusByMemberRO¶
func (c *Client) GeoRadiusByMemberRO(key, memberstring, query *GeoRadiusQuery) *GeoLocationCmd
func (*Client)GeoRadiusRO¶
func (c *Client) GeoRadiusRO(keystring, longitude, latitudefloat64, query *GeoRadiusQuery) *GeoLocationCmd
func (*Client)HGetAll¶
func (c *Client) HGetAll(keystring) *StringStringMapCmd
func (*Client)HIncrByFloat¶
func (*Client)HKeys¶
func (c *Client) HKeys(keystring) *StringSliceCmd
func (*Client)HVals¶
func (c *Client) HVals(keystring) *StringSliceCmd
func (*Client)Incr¶
Example¶
package mainimport ("fmt""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {result, err := redisdb.Incr("counter").Result()if err != nil {panic(err)}fmt.Println(result)}Output:1
func (*Client)IncrByFloat¶
func (*Client)Keys¶
func (c *Client) Keys(patternstring) *StringSliceCmd
func (*Client)LInsertAfter¶
func (*Client)LInsertBefore¶
func (*Client)LRange¶
func (c *Client) LRange(keystring, start, stopint64) *StringSliceCmd
func (*Client)MemoryUsage¶
func (*Client)ObjectEncoding¶
func (*Client)ObjectIdleTime¶
func (c *Client) ObjectIdleTime(keystring) *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(keystring) *DurationCmd
func (*Client)Pipeline¶
Example¶
package mainimport ("fmt""time""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {pipe := redisdb.Pipeline()incr := pipe.Incr("pipeline_counter")pipe.Expire("pipeline_counter", time.Hour)// Execute//// INCR pipeline_counter// EXPIRE pipeline_counts 3600//// using one redisdb-server roundtrip._, err := pipe.Exec()fmt.Println(incr.Val(), err)}Output:1 <nil>
func (*Client)Pipelined¶
Example¶
package mainimport ("fmt""time""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {var incr *redis.IntCmd_, err := redisdb.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(patternstring) *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(keystring) *StringSliceCmd
Redis `SMEMBERS key` command output as a slice
func (*Client)SMembersMap¶
func (c *Client) SMembersMap(keystring) *StringStructMapCmd
Redis `SMEMBERS key` command output as a map
func (*Client)SPopN¶
func (c *Client) SPopN(keystring, countint64) *StringSliceCmd
Redis `SPOP key count` command.
func (*Client)SRandMember¶
Redis `SRANDMEMBER key` command.
func (*Client)SRandMemberN¶
func (c *Client) SRandMemberN(keystring, countint64) *StringSliceCmd
Redis `SRANDMEMBER key count` command.
func (*Client)SUnion¶
func (c *Client) SUnion(keys ...string) *StringSliceCmd
func (*Client)SUnionStore¶
func (*Client)Scan¶
Example¶
package mainimport ("fmt""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {redisdb.FlushDB()for i := 0; i < 33; i++ {err := redisdb.Set(fmt.Sprintf("key%d", i), "value", 0).Err()if err != nil {panic(err)}}var cursor uint64var n intfor {var keys []stringvar err errorkeys, cursor, err = redisdb.Scan(cursor, "key*", 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(hashes ...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 mainimport ("time""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {// Last argument is expiration. Zero means the key has no// expiration time.err := redisdb.Set("key", "value", 0).Err()if err != nil {panic(err)}// key2 will expire in an hour.err = redisdb.Set("key2", "value", time.Hour).Err()if err != nil {panic(err)}}func (*Client)SetLimiter¶
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(keystring, 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.Note that this method does not wait on a response from Redis, so thesubscription may not be active immediately. To force the connection to wait,you may call the Receive() method on the returned *PubSub like so:
sub := client.Subscribe(queryResp)iface, err := sub.Receive()if err != nil { // handle error}// Should be *Subscription, but others are possible if other actions have been// taken on sub since it was created.switch iface.(type) {case *Subscription: // subscribe succeededcase *Message: // received first messagecase *Pong: // pong receiveddefault: // handle error}ch := sub.Channel()func (*Client)TTL¶
func (c *Client) TTL(keystring) *DurationCmd
func (*Client)TxPipeline¶
TxPipeline acts like Pipeline, but wraps queued commands with MULTI/EXEC.
Example¶
package mainimport ("fmt""time""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {pipe := redisdb.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 redisdb-server roundtrip._, err := pipe.Exec()fmt.Println(incr.Val(), err)}Output:1 <nil>
func (*Client)TxPipelined¶
Example¶
package mainimport ("fmt""time""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {var incr *redis.IntCmd_, err := redisdb.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¶
Watch prepares a transaction and marks the keys to be watchedfor conditional execution if there are any keys.
The transaction is automatically closed when fn exits.
Example¶
package mainimport ("errors""fmt""sync""time""github.com/go-redis/redis")var redisdb *redis.Clientfunc init() {redisdb = redis.NewClient(&redis.Options{Addr: ":6379",DialTimeout: 10 * time.Second,ReadTimeout: 30 * time.Second,WriteTimeout: 30 * time.Second,PoolSize: 10,PoolTimeout: 30 * time.Second,})}func main() {const routineCount = 100// Transactionally increments key using GET and SET commands.increment := func(key string) error {txf := func(tx *redis.Tx) error {// get current value or zeron, err := tx.Get(key).Int()if err != nil && err != redis.Nil {return err}// actual opperation (local in optimistic lock)n++// runs only if the watched keys remain unchanged_, err = tx.Pipelined(func(pipe redis.Pipeliner) error {// pipe handles the error casepipe.Set(key, n, 0)return nil})return err}for retries := routineCount; retries > 0; retries-- {err := redisdb.Watch(txf, key)if err != redis.TxFailedErr {return err}// optimistic lock lost}return errors.New("increment reached maximum number of retries")}var wg sync.WaitGroupwg.Add(routineCount)for i := 0; i < routineCount; i++ {go func() {defer wg.Done()if err := increment("counter3"); err != nil {fmt.Println("increment error:", err)}}()}wg.Wait()n, err := redisdb.Get("counter3").Int()fmt.Println("ended with", n, err)}Output:ended with 100 <nil>
func (*Client)WrapProcess¶
WrapProcess wraps function that processes Redis commands.
func (*Client)WrapProcessPipeline¶
func (*Client)XClaim¶
func (c *Client) XClaim(a *XClaimArgs) *XMessageSliceCmd
func (*Client)XClaimJustID¶
func (c *Client) XClaimJustID(a *XClaimArgs) *StringSliceCmd
func (*Client)XGroupCreate¶
func (*Client)XGroupCreateMkStream¶
func (*Client)XGroupDelConsumer¶
func (*Client)XGroupDestroy¶
func (*Client)XGroupSetID¶
func (*Client)XPending¶
func (c *Client) XPending(stream, groupstring) *XPendingCmd
func (*Client)XPendingExt¶
func (c *Client) XPendingExt(a *XPendingExtArgs) *XPendingExtCmd
func (*Client)XRange¶
func (c *Client) XRange(stream, start, stopstring) *XMessageSliceCmd
func (*Client)XRangeN¶
func (c *Client) XRangeN(stream, start, stopstring, countint64) *XMessageSliceCmd
func (*Client)XRead¶
func (c *Client) XRead(a *XReadArgs) *XStreamSliceCmd
func (*Client)XReadGroup¶
func (c *Client) XReadGroup(a *XReadGroupArgs) *XStreamSliceCmd
func (*Client)XReadStreams¶
func (c *Client) XReadStreams(streams ...string) *XStreamSliceCmd
func (*Client)XRevRange¶
func (c *Client) XRevRange(stream, start, stopstring) *XMessageSliceCmd
func (*Client)XRevRangeN¶
func (c *Client) XRevRangeN(stream, start, stopstring, countint64) *XMessageSliceCmd
func (*Client)XTrimApprox¶
func (*Client)ZInterStore¶
func (*Client)ZRange¶
func (c *Client) ZRange(keystring, start, stopint64) *StringSliceCmd
func (*Client)ZRangeByLex¶
func (c *Client) ZRangeByLex(keystring, optZRangeBy) *StringSliceCmd
func (*Client)ZRangeByScore¶
func (c *Client) ZRangeByScore(keystring, optZRangeBy) *StringSliceCmd
func (*Client)ZRangeByScoreWithScores¶
func (*Client)ZRangeWithScores¶
func (*Client)ZRemRangeByLex¶
func (*Client)ZRemRangeByRank¶
func (*Client)ZRemRangeByScore¶
func (*Client)ZRevRange¶
func (c *Client) ZRevRange(keystring, start, stopint64) *StringSliceCmd
func (*Client)ZRevRangeByLex¶
func (c *Client) ZRevRangeByLex(keystring, optZRangeBy) *StringSliceCmd
func (*Client)ZRevRangeByScore¶
func (c *Client) ZRevRangeByScore(keystring, optZRangeBy) *StringSliceCmd
func (*Client)ZRevRangeByScoreWithScores¶
func (*Client)ZRevRangeWithScores¶
typeClusterClient¶
type ClusterClient struct {// contains filtered or unexported fields}ClusterClient is a Redis Cluster client representing a pool of zeroor more underlying connections. It's safe for concurrent use bymultiple goroutines.
funcNewClusterClient¶
func NewClusterClient(opt *ClusterOptions) *ClusterClient
NewClusterClient returns a Redis Cluster client as described inhttp://redis.io/topics/cluster-spec.
Example¶
package mainimport ("github.com/go-redis/redis")func main() {// See http://redis.io/topics/cluster-tutorial for instructions// how to setup Redis Cluster.redisdb := redis.NewClusterClient(&redis.ClusterOptions{Addrs: []string{":7000", ":7001", ":7002", ":7003", ":7004", ":7005"},})redisdb.Ping()}Example (ManualSetup)¶
Following example creates a cluster from 2 master nodes and 2 slave nodeswithout using cluster mode or Redis Sentinel.
package mainimport ("github.com/go-redis/redis")func main() {// clusterSlots returns cluster slots information.// It can use service like ZooKeeper to maintain configuration information// and Cluster.ReloadState to manually trigger state reloading.clusterSlots := func() ([]redis.ClusterSlot, error) {slots := []redis.ClusterSlot{// First node with 1 master and 1 slave.{Start: 0,End: 8191,Nodes: []redis.ClusterNode{{Addr: ":7000", // master}, {Addr: ":8000", // 1st slave}},},// Second node with 1 master and 1 slave.{Start: 8192,End: 16383,Nodes: []redis.ClusterNode{{Addr: ":7001", // master}, {Addr: ":8001", // 1st slave}},},}return slots, nil}redisdb := redis.NewClusterClient(&redis.ClusterOptions{ClusterSlots: clusterSlots,RouteRandomly: true,})redisdb.Ping()// ReloadState reloads cluster state. It calls ClusterSlots func// to get cluster slots information.err := redisdb.ReloadState()if err != nil {panic(err)}}func (*ClusterClient)BLPop¶
func (c *ClusterClient) BLPop(timeouttime.Duration, keys ...string) *StringSliceCmd
func (*ClusterClient)BRPop¶
func (c *ClusterClient) BRPop(timeouttime.Duration, keys ...string) *StringSliceCmd
func (*ClusterClient)BRPopLPush¶
func (*ClusterClient)BZPopMax¶
func (c *ClusterClient) BZPopMax(timeouttime.Duration, keys ...string) *ZWithKeyCmd
Redis `BZPOPMAX key [key ...] timeout` command.
func (*ClusterClient)BZPopMin¶
func (c *ClusterClient) BZPopMin(timeouttime.Duration, keys ...string) *ZWithKeyCmd
Redis `BZPOPMIN key [key ...] timeout` command.
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)ClientKillByFilter¶
ClientKillByFilter is new style synx, while the ClientKill is oldCLIENT KILL <option> [value] ... <option> [value]
func (*ClusterClient)ClientList¶
func (c *ClusterClient) ClientList() *StringCmd
func (*ClusterClient)ClientPause¶
func (*ClusterClient)ClientUnblock¶
func (*ClusterClient)ClientUnblockWithError¶
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 meantto 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)ClusterGetKeysInSlot¶
func (c *ClusterClient) ClusterGetKeysInSlot(slotint, countint) *StringSliceCmd
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(nodeIDstring) *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)ConfigRewrite¶
func (c *ClusterClient) ConfigRewrite() *StatusCmd
func (*ClusterClient)Context¶
func (c *ClusterClient) Context()context.Context
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)Do¶
func (c *ClusterClient) Do(args ...interface{}) *Cmd
Do creates a Cmd from the args and processes the cmd.
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(keystring, geoLocation ...*GeoLocation) *IntCmd
func (*ClusterClient)GeoHash¶
func (c *ClusterClient) GeoHash(keystring, members ...string) *StringSliceCmd
func (*ClusterClient)GeoRadius¶
func (c *ClusterClient) GeoRadius(keystring, longitude, latitudefloat64, query *GeoRadiusQuery) *GeoLocationCmd
func (*ClusterClient)GeoRadiusByMember¶
func (c *ClusterClient) GeoRadiusByMember(key, memberstring, query *GeoRadiusQuery) *GeoLocationCmd
func (*ClusterClient)GeoRadiusByMemberRO¶
func (c *ClusterClient) GeoRadiusByMemberRO(key, memberstring, query *GeoRadiusQuery) *GeoLocationCmd
func (*ClusterClient)GeoRadiusRO¶
func (c *ClusterClient) GeoRadiusRO(keystring, longitude, latitudefloat64, 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(keystring) *StringStringMapCmd
func (*ClusterClient)HIncrByFloat¶
func (*ClusterClient)HKeys¶
func (c *ClusterClient) HKeys(keystring) *StringSliceCmd
func (*ClusterClient)HVals¶
func (c *ClusterClient) HVals(keystring) *StringSliceCmd
func (*ClusterClient)IncrByFloat¶
func (*ClusterClient)Keys¶
func (c *ClusterClient) Keys(patternstring) *StringSliceCmd
func (*ClusterClient)LInsertAfter¶
func (*ClusterClient)LInsertBefore¶
func (*ClusterClient)LRange¶
func (c *ClusterClient) LRange(keystring, start, stopint64) *StringSliceCmd
func (*ClusterClient)MemoryUsage¶
func (*ClusterClient)ObjectEncoding¶
func (*ClusterClient)ObjectIdleTime¶
func (c *ClusterClient) ObjectIdleTime(keystring) *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(keystring) *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(cmdCmder)error
func (*ClusterClient)PubSubChannels¶
func (c *ClusterClient) PubSubChannels(patternstring) *StringSliceCmd
func (*ClusterClient)PubSubNumPat¶
func (c *ClusterClient) PubSubNumPat() *IntCmd
func (*ClusterClient)PubSubNumSub¶
func (c *ClusterClient) PubSubNumSub(channels ...string) *StringIntMapCmd
func (*ClusterClient)ReloadState¶
func (c *ClusterClient) ReloadState()error
ReloadState reloads cluster state. If available it calls ClusterSlots functo get cluster slots information.
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(keystring) *StringSliceCmd
Redis `SMEMBERS key` command output as a slice
func (*ClusterClient)SMembersMap¶
func (c *ClusterClient) SMembersMap(keystring) *StringStructMapCmd
Redis `SMEMBERS key` command output as a map
func (*ClusterClient)SPopN¶
func (c *ClusterClient) SPopN(keystring, countint64) *StringSliceCmd
Redis `SPOP key count` command.
func (*ClusterClient)SRandMember¶
Redis `SRANDMEMBER key` command.
func (*ClusterClient)SRandMemberN¶
func (c *ClusterClient) SRandMemberN(keystring, countint64) *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(hashes ...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(keystring, 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(keystring) *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)WithContext¶
func (c *ClusterClient) WithContext(ctxcontext.Context) *ClusterClient
func (*ClusterClient)WrapProcess¶
func (c *ClusterClient) WrapProcess(fn func(oldProcess func(Cmder)error) func(Cmder)error,)
func (*ClusterClient)WrapProcessPipeline¶
func (c *ClusterClient) WrapProcessPipeline(fn func(oldProcess func([]Cmder)error) func([]Cmder)error,)
func (*ClusterClient)XClaim¶
func (c *ClusterClient) XClaim(a *XClaimArgs) *XMessageSliceCmd
func (*ClusterClient)XClaimJustID¶
func (c *ClusterClient) XClaimJustID(a *XClaimArgs) *StringSliceCmd
func (*ClusterClient)XGroupCreate¶
func (*ClusterClient)XGroupCreateMkStream¶
func (*ClusterClient)XGroupDelConsumer¶
func (*ClusterClient)XGroupDestroy¶
func (*ClusterClient)XGroupSetID¶
func (*ClusterClient)XPending¶
func (c *ClusterClient) XPending(stream, groupstring) *XPendingCmd
func (*ClusterClient)XPendingExt¶
func (c *ClusterClient) XPendingExt(a *XPendingExtArgs) *XPendingExtCmd
func (*ClusterClient)XRange¶
func (c *ClusterClient) XRange(stream, start, stopstring) *XMessageSliceCmd
func (*ClusterClient)XRangeN¶
func (c *ClusterClient) XRangeN(stream, start, stopstring, countint64) *XMessageSliceCmd
func (*ClusterClient)XRead¶
func (c *ClusterClient) XRead(a *XReadArgs) *XStreamSliceCmd
func (*ClusterClient)XReadGroup¶
func (c *ClusterClient) XReadGroup(a *XReadGroupArgs) *XStreamSliceCmd
func (*ClusterClient)XReadStreams¶
func (c *ClusterClient) XReadStreams(streams ...string) *XStreamSliceCmd
func (*ClusterClient)XRevRange¶
func (c *ClusterClient) XRevRange(stream, start, stopstring) *XMessageSliceCmd
func (*ClusterClient)XRevRangeN¶
func (c *ClusterClient) XRevRangeN(stream, start, stopstring, countint64) *XMessageSliceCmd
func (*ClusterClient)XTrimApprox¶
func (*ClusterClient)ZInterStore¶
func (*ClusterClient)ZRange¶
func (c *ClusterClient) ZRange(keystring, start, stopint64) *StringSliceCmd
func (*ClusterClient)ZRangeByLex¶
func (c *ClusterClient) ZRangeByLex(keystring, optZRangeBy) *StringSliceCmd
func (*ClusterClient)ZRangeByScore¶
func (c *ClusterClient) ZRangeByScore(keystring, optZRangeBy) *StringSliceCmd
func (*ClusterClient)ZRangeByScoreWithScores¶
func (*ClusterClient)ZRangeWithScores¶
func (*ClusterClient)ZRemRangeByLex¶
func (*ClusterClient)ZRemRangeByRank¶
func (*ClusterClient)ZRemRangeByScore¶
func (*ClusterClient)ZRevRange¶
func (c *ClusterClient) ZRevRange(keystring, start, stopint64) *StringSliceCmd
func (*ClusterClient)ZRevRangeByLex¶
func (c *ClusterClient) ZRevRangeByLex(keystring, optZRangeBy) *StringSliceCmd
func (*ClusterClient)ZRevRangeByScore¶
func (c *ClusterClient) ZRevRangeByScore(keystring, optZRangeBy) *StringSliceCmd
func (*ClusterClient)ZRevRangeByScoreWithScores¶
func (*ClusterClient)ZRevRangeWithScores¶
typeClusterNode¶
typeClusterOptions¶
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 8 retries.MaxRedirectsint// Enables read-only commands on slave nodes.ReadOnlybool// Allows routing read-only commands to the closest master or slave node.// It automatically enables ReadOnly.RouteByLatencybool// Allows routing read-only commands to the random master or slave node.// It automatically enables ReadOnly.RouteRandomlybool// Optional function that returns cluster slots information.// It is useful to manually create cluster of standalone Redis servers// and load-balance read/write operations between master and slaves.// It can use service like ZooKeeper to maintain configuration information// and Cluster.ReloadState to manually trigger state reloading.ClusterSlots func() ([]ClusterSlot,error)// Optional hook that is called when a new node is created.OnNewNode func(*Client)OnConnect func(*Conn)errorPasswordstringMaxRetriesintMinRetryBackofftime.DurationMaxRetryBackofftime.DurationDialTimeouttime.DurationReadTimeouttime.DurationWriteTimeouttime.Duration// PoolSize applies per cluster node and not for the whole cluster.PoolSizeintMinIdleConnsintMaxConnAgetime.DurationPoolTimeouttime.DurationIdleTimeouttime.DurationIdleCheckFrequencytime.DurationTLSConfig *tls.Config}ClusterOptions are used to configure a cluster client and should bepassed to NewClusterClient.
typeClusterSlot¶
type ClusterSlot struct {StartintEndintNodes []ClusterNode}typeClusterSlotsCmd¶
type ClusterSlotsCmd struct {// contains filtered or unexported fields}funcNewClusterSlotsCmd¶
func NewClusterSlotsCmd(args ...interface{}) *ClusterSlotsCmdfuncNewClusterSlotsCmdResult¶
func NewClusterSlotsCmdResult(val []ClusterSlot, errerror) *ClusterSlotsCmd
NewClusterSlotsCmdResult returns a ClusterSlotsCmd initialised 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
typeCmd¶
type Cmd struct {// contains filtered or unexported fields}funcNewCmdResult¶
NewCmdResult returns a Cmd initialised with val and err for testing
typeCmdable¶
type Cmdable interface {Pipeline()PipelinerPipelined(fn func(Pipeliner)error) ([]Cmder,error)TxPipelined(fn func(Pipeliner)error) ([]Cmder,error)TxPipeline()PipelinerCommand() *CommandsInfoCmdClientGetName() *StringCmdEcho(message interface{}) *StringCmdPing() *StatusCmdQuit() *StatusCmdDel(keys ...string) *IntCmdUnlink(keys ...string) *IntCmdDump(keystring) *StringCmdExists(keys ...string) *IntCmdExpire(keystring, expirationtime.Duration) *BoolCmdExpireAt(keystring, tmtime.Time) *BoolCmdKeys(patternstring) *StringSliceCmdMigrate(host, port, keystring, dbint64, timeouttime.Duration) *StatusCmdMove(keystring, dbint64) *BoolCmdObjectRefCount(keystring) *IntCmdObjectEncoding(keystring) *StringCmdObjectIdleTime(keystring) *DurationCmdPersist(keystring) *BoolCmdPExpire(keystring, expirationtime.Duration) *BoolCmdPExpireAt(keystring, tmtime.Time) *BoolCmdPTTL(keystring) *DurationCmdRandomKey() *StringCmdRename(key, newkeystring) *StatusCmdRenameNX(key, newkeystring) *BoolCmdRestore(keystring, ttltime.Duration, valuestring) *StatusCmdRestoreReplace(keystring, ttltime.Duration, valuestring) *StatusCmdSort(keystring, sort *Sort) *StringSliceCmdSortStore(key, storestring, sort *Sort) *IntCmdSortInterfaces(keystring, sort *Sort) *SliceCmdTouch(keys ...string) *IntCmdTTL(keystring) *DurationCmdType(keystring) *StatusCmdScan(cursoruint64, matchstring, countint64) *ScanCmdSScan(keystring, cursoruint64, matchstring, countint64) *ScanCmdHScan(keystring, cursoruint64, matchstring, countint64) *ScanCmdZScan(keystring, cursoruint64, matchstring, countint64) *ScanCmdAppend(key, valuestring) *IntCmdBitCount(keystring, bitCount *BitCount) *IntCmdBitOpAnd(destKeystring, keys ...string) *IntCmdBitOpOr(destKeystring, keys ...string) *IntCmdBitOpXor(destKeystring, keys ...string) *IntCmdBitOpNot(destKeystring, keystring) *IntCmdBitPos(keystring, bitint64, pos ...int64) *IntCmdDecr(keystring) *IntCmdDecrBy(keystring, decrementint64) *IntCmdGet(keystring) *StringCmdGetBit(keystring, offsetint64) *IntCmdGetRange(keystring, start, endint64) *StringCmdGetSet(keystring, value interface{}) *StringCmdIncr(keystring) *IntCmdIncrBy(keystring, valueint64) *IntCmdIncrByFloat(keystring, valuefloat64) *FloatCmdMGet(keys ...string) *SliceCmdMSet(pairs ...interface{}) *StatusCmdMSetNX(pairs ...interface{}) *BoolCmdSet(keystring, value interface{}, expirationtime.Duration) *StatusCmdSetBit(keystring, offsetint64, valueint) *IntCmdSetNX(keystring, value interface{}, expirationtime.Duration) *BoolCmdSetXX(keystring, value interface{}, expirationtime.Duration) *BoolCmdSetRange(keystring, offsetint64, valuestring) *IntCmdStrLen(keystring) *IntCmdHDel(keystring, fields ...string) *IntCmdHExists(key, fieldstring) *BoolCmdHGet(key, fieldstring) *StringCmdHGetAll(keystring) *StringStringMapCmdHIncrBy(key, fieldstring, incrint64) *IntCmdHIncrByFloat(key, fieldstring, incrfloat64) *FloatCmdHKeys(keystring) *StringSliceCmdHLen(keystring) *IntCmdHMGet(keystring, fields ...string) *SliceCmdHMSet(keystring, fields map[string]interface{}) *StatusCmdHSet(key, fieldstring, value interface{}) *BoolCmdHSetNX(key, fieldstring, value interface{}) *BoolCmdHVals(keystring) *StringSliceCmdBLPop(timeouttime.Duration, keys ...string) *StringSliceCmdBRPop(timeouttime.Duration, keys ...string) *StringSliceCmdBRPopLPush(source, destinationstring, timeouttime.Duration) *StringCmdLIndex(keystring, indexint64) *StringCmdLInsert(key, opstring, pivot, value interface{}) *IntCmdLInsertBefore(keystring, pivot, value interface{}) *IntCmdLInsertAfter(keystring, pivot, value interface{}) *IntCmdLLen(keystring) *IntCmdLPop(keystring) *StringCmdLPush(keystring, values ...interface{}) *IntCmdLPushX(keystring, value interface{}) *IntCmdLRange(keystring, start, stopint64) *StringSliceCmdLRem(keystring, countint64, value interface{}) *IntCmdLSet(keystring, indexint64, value interface{}) *StatusCmdLTrim(keystring, start, stopint64) *StatusCmdRPop(keystring) *StringCmdRPopLPush(source, destinationstring) *StringCmdRPush(keystring, values ...interface{}) *IntCmdRPushX(keystring, value interface{}) *IntCmdSAdd(keystring, members ...interface{}) *IntCmdSCard(keystring) *IntCmdSDiff(keys ...string) *StringSliceCmdSDiffStore(destinationstring, keys ...string) *IntCmdSInter(keys ...string) *StringSliceCmdSInterStore(destinationstring, keys ...string) *IntCmdSIsMember(keystring, member interface{}) *BoolCmdSMembers(keystring) *StringSliceCmdSMembersMap(keystring) *StringStructMapCmdSMove(source, destinationstring, member interface{}) *BoolCmdSPop(keystring) *StringCmdSPopN(keystring, countint64) *StringSliceCmdSRandMember(keystring) *StringCmdSRandMemberN(keystring, countint64) *StringSliceCmdSRem(keystring, members ...interface{}) *IntCmdSUnion(keys ...string) *StringSliceCmdSUnionStore(destinationstring, keys ...string) *IntCmdXAdd(a *XAddArgs) *StringCmdXDel(streamstring, ids ...string) *IntCmdXLen(streamstring) *IntCmdXRange(stream, start, stopstring) *XMessageSliceCmdXRangeN(stream, start, stopstring, countint64) *XMessageSliceCmdXRevRange(streamstring, start, stopstring) *XMessageSliceCmdXRevRangeN(streamstring, start, stopstring, countint64) *XMessageSliceCmdXRead(a *XReadArgs) *XStreamSliceCmdXReadStreams(streams ...string) *XStreamSliceCmdXGroupCreate(stream, group, startstring) *StatusCmdXGroupCreateMkStream(stream, group, startstring) *StatusCmdXGroupSetID(stream, group, startstring) *StatusCmdXGroupDestroy(stream, groupstring) *IntCmdXGroupDelConsumer(stream, group, consumerstring) *IntCmdXReadGroup(a *XReadGroupArgs) *XStreamSliceCmdXAck(stream, groupstring, ids ...string) *IntCmdXPending(stream, groupstring) *XPendingCmdXPendingExt(a *XPendingExtArgs) *XPendingExtCmdXClaim(a *XClaimArgs) *XMessageSliceCmdXClaimJustID(a *XClaimArgs) *StringSliceCmdXTrim(keystring, maxLenint64) *IntCmdXTrimApprox(keystring, maxLenint64) *IntCmdBZPopMax(timeouttime.Duration, keys ...string) *ZWithKeyCmdBZPopMin(timeouttime.Duration, keys ...string) *ZWithKeyCmdZAdd(keystring, members ...Z) *IntCmdZAddNX(keystring, members ...Z) *IntCmdZAddXX(keystring, members ...Z) *IntCmdZAddCh(keystring, members ...Z) *IntCmdZAddNXCh(keystring, members ...Z) *IntCmdZAddXXCh(keystring, members ...Z) *IntCmdZIncr(keystring, memberZ) *FloatCmdZIncrNX(keystring, memberZ) *FloatCmdZIncrXX(keystring, memberZ) *FloatCmdZCard(keystring) *IntCmdZCount(key, min, maxstring) *IntCmdZLexCount(key, min, maxstring) *IntCmdZIncrBy(keystring, incrementfloat64, memberstring) *FloatCmdZInterStore(destinationstring, storeZStore, keys ...string) *IntCmdZPopMax(keystring, count ...int64) *ZSliceCmdZPopMin(keystring, count ...int64) *ZSliceCmdZRange(keystring, start, stopint64) *StringSliceCmdZRangeWithScores(keystring, start, stopint64) *ZSliceCmdZRangeByScore(keystring, optZRangeBy) *StringSliceCmdZRangeByLex(keystring, optZRangeBy) *StringSliceCmdZRangeByScoreWithScores(keystring, optZRangeBy) *ZSliceCmdZRank(key, memberstring) *IntCmdZRem(keystring, members ...interface{}) *IntCmdZRemRangeByRank(keystring, start, stopint64) *IntCmdZRemRangeByScore(key, min, maxstring) *IntCmdZRemRangeByLex(key, min, maxstring) *IntCmdZRevRange(keystring, start, stopint64) *StringSliceCmdZRevRangeWithScores(keystring, start, stopint64) *ZSliceCmdZRevRangeByScore(keystring, optZRangeBy) *StringSliceCmdZRevRangeByLex(keystring, optZRangeBy) *StringSliceCmdZRevRangeByScoreWithScores(keystring, optZRangeBy) *ZSliceCmdZRevRank(key, memberstring) *IntCmdZScore(key, memberstring) *FloatCmdZUnionStore(deststring, storeZStore, keys ...string) *IntCmdPFAdd(keystring, els ...interface{}) *IntCmdPFCount(keys ...string) *IntCmdPFMerge(deststring, keys ...string) *StatusCmdBgRewriteAOF() *StatusCmdBgSave() *StatusCmdClientKill(ipPortstring) *StatusCmdClientKillByFilter(keys ...string) *IntCmdClientList() *StringCmdClientPause(durtime.Duration) *BoolCmdClientID() *IntCmdConfigGet(parameterstring) *SliceCmdConfigResetStat() *StatusCmdConfigSet(parameter, valuestring) *StatusCmdConfigRewrite() *StatusCmdDBSize() *IntCmdFlushAll() *StatusCmdFlushAllAsync() *StatusCmdFlushDB() *StatusCmdFlushDBAsync() *StatusCmdInfo(section ...string) *StringCmdLastSave() *IntCmdSave() *StatusCmdShutdown() *StatusCmdShutdownSave() *StatusCmdShutdownNoSave() *StatusCmdSlaveOf(host, portstring) *StatusCmdTime() *TimeCmdEval(scriptstring, keys []string, args ...interface{}) *CmdEvalSha(sha1string, keys []string, args ...interface{}) *CmdScriptExists(hashes ...string) *BoolSliceCmdScriptFlush() *StatusCmdScriptKill() *StatusCmdScriptLoad(scriptstring) *StringCmdDebugObject(keystring) *StringCmdPublish(channelstring, message interface{}) *IntCmdPubSubChannels(patternstring) *StringSliceCmdPubSubNumSub(channels ...string) *StringIntMapCmdPubSubNumPat() *IntCmdClusterSlots() *ClusterSlotsCmdClusterNodes() *StringCmdClusterMeet(host, portstring) *StatusCmdClusterForget(nodeIDstring) *StatusCmdClusterReplicate(nodeIDstring) *StatusCmdClusterResetSoft() *StatusCmdClusterResetHard() *StatusCmdClusterInfo() *StringCmdClusterKeySlot(keystring) *IntCmdClusterGetKeysInSlot(slotint, countint) *StringSliceCmdClusterCountFailureReports(nodeIDstring) *IntCmdClusterCountKeysInSlot(slotint) *IntCmdClusterDelSlots(slots ...int) *StatusCmdClusterDelSlotsRange(min, maxint) *StatusCmdClusterSaveConfig() *StatusCmdClusterSlaves(nodeIDstring) *StringSliceCmdClusterFailover() *StatusCmdClusterAddSlots(slots ...int) *StatusCmdClusterAddSlotsRange(min, maxint) *StatusCmdGeoAdd(keystring, geoLocation ...*GeoLocation) *IntCmdGeoPos(keystring, members ...string) *GeoPosCmdGeoRadius(keystring, longitude, latitudefloat64, query *GeoRadiusQuery) *GeoLocationCmdGeoRadiusRO(keystring, longitude, latitudefloat64, query *GeoRadiusQuery) *GeoLocationCmdGeoRadiusByMember(key, memberstring, query *GeoRadiusQuery) *GeoLocationCmdGeoRadiusByMemberRO(key, memberstring, query *GeoRadiusQuery) *GeoLocationCmdGeoDist(keystring, member1, member2, unitstring) *FloatCmdGeoHash(keystring, members ...string) *StringSliceCmdReadOnly() *StatusCmdReadWrite() *StatusCmdMemoryUsage(keystring, samples ...int) *IntCmd}typeCommandInfo¶
typeCommandsInfoCmd¶
type CommandsInfoCmd struct {// contains filtered or unexported fields}funcNewCommandsInfoCmd¶
func NewCommandsInfoCmd(args ...interface{}) *CommandsInfoCmdfuncNewCommandsInfoCmdResult¶
func NewCommandsInfoCmdResult(val map[string]*CommandInfo, errerror) *CommandsInfoCmd
NewCommandsInfoCmdResult returns a CommandsInfoCmd initialised 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
typeConn¶
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 belong-lived and shared between many goroutines.
func (*Conn)Do¶
func (c *Conn) Do(args ...interface{}) *CmdDo creates a Cmd from the args and processes the cmd.
func (*Conn)TxPipeline¶
TxPipeline acts like Pipeline, but wraps queued commands with MULTI/EXEC.
func (*Conn)WrapProcess¶
WrapProcess wraps function that processes Redis commands.
typeDurationCmd¶
type DurationCmd struct {// contains filtered or unexported fields}funcNewDurationCmd¶
func NewDurationCmd(precisiontime.Duration, args ...interface{}) *DurationCmd
funcNewDurationResult¶
func NewDurationResult(valtime.Duration, errerror) *DurationCmd
NewDurationResult returns a DurationCmd initialised with val and err for testing
func (*DurationCmd)String¶
func (cmd *DurationCmd) String()string
func (*DurationCmd)Val¶
func (cmd *DurationCmd) Val()time.Duration
typeFailoverOptions¶
type FailoverOptions struct {// The master name.MasterNamestring// A seed list of host:port addresses of sentinel nodes.SentinelAddrs []stringOnConnect func(*Conn)errorPasswordstringDBintMaxRetriesintMinRetryBackofftime.DurationMaxRetryBackofftime.DurationDialTimeouttime.DurationReadTimeouttime.DurationWriteTimeouttime.DurationPoolSizeintMinIdleConnsintMaxConnAgetime.DurationPoolTimeouttime.DurationIdleTimeouttime.DurationIdleCheckFrequencytime.DurationTLSConfig *tls.Config}FailoverOptions are used to configure a failover client and shouldbe passed to NewFailoverClient.
typeFloatCmd¶
type FloatCmd struct {// contains filtered or unexported fields}funcNewFloatCmd¶
func NewFloatCmd(args ...interface{}) *FloatCmdfuncNewFloatResult¶
NewFloatResult returns a FloatCmd initialised with val and err for testing
typeGeoLocation¶
GeoLocation is used with GeoAdd to add geospatial location.
typeGeoLocationCmd¶
type GeoLocationCmd struct {// contains filtered or unexported fields}funcNewGeoLocationCmd¶
func NewGeoLocationCmd(q *GeoRadiusQuery, args ...interface{}) *GeoLocationCmd
funcNewGeoLocationCmdResult¶
func NewGeoLocationCmdResult(val []GeoLocation, errerror) *GeoLocationCmd
NewGeoLocationCmdResult returns a GeoLocationCmd initialised 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
typeGeoPosCmd¶
type GeoPosCmd struct {// contains filtered or unexported fields}funcNewGeoPosCmd¶
func NewGeoPosCmd(args ...interface{}) *GeoPosCmdtypeGeoRadiusQuery¶
type GeoRadiusQuery struct {Radiusfloat64// Can be m, km, ft, or mi. Default is km.UnitstringWithCoordboolWithDistboolWithGeoHashboolCountint// Can be ASC or DESC. Default is no sort order.SortstringStorestringStoreDiststring}GeoRadiusQuery is used with GeoRadius to query geospatial index.
typeIntCmd¶
type IntCmd struct {// contains filtered or unexported fields}funcNewIntResult¶
NewIntResult returns an IntCmd initialised with val and err for testing
typeLimiter¶
type Limiter interface {// Allow returns a nil if operation is allowed or an error otherwise.// If operation is allowed client must report the result of operation// whether is a success or a failure.Allow()error// ReportResult reports the result of previously allowed operation.// nil indicates a success, non-nil error indicates a failure.ReportResult(resulterror)}Limiter is the interface of a rate limiter or a circuit breaker.
typeOptions¶
type Options struct {// The network type, either tcp or unix.// Default is tcp.Networkstring// host:port address.Addrstring// 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.Passwordstring// Database to be selected after connecting to the server.DBint// Maximum number of retries before giving up.// Default is to not retry failed commands.MaxRetriesint// Minimum backoff between each retry.// Default is 8 milliseconds; -1 disables backoff.MinRetryBackofftime.Duration// Maximum backoff between each retry.// Default is 512 milliseconds; -1 disables backoff.MaxRetryBackofftime.Duration// Dial timeout for establishing new connections.// Default is 5 seconds.DialTimeouttime.Duration// Timeout for socket reads. If reached, commands will fail// with a timeout instead of blocking. Use value -1 for no timeout and 0 for default.// Default is 3 seconds.ReadTimeouttime.Duration// Timeout for socket writes. If reached, commands will fail// with a timeout instead of blocking.// Default is ReadTimeout.WriteTimeouttime.Duration// Maximum number of socket connections.// Default is 10 connections per every CPU as reported by runtime.NumCPU.PoolSizeint// Minimum number of idle connections which is useful when establishing// new connection is slow.MinIdleConnsint// Connection age at which client retires (closes) the connection.// Default is to not close aged connections.MaxConnAgetime.Duration// Amount of time client waits for connection if all connections// are busy before returning an error.// Default is ReadTimeout + 1 second.PoolTimeouttime.Duration// Amount of time after which client closes idle connections.// Should be less than server's timeout.// Default is 5 minutes. -1 disables idle timeout check.IdleTimeouttime.Duration// Frequency of idle checks made by idle connections reaper.// Default is 1 minute. -1 disables idle connections reaper,// but idle connections are still discarded by the client// if IdleTimeout is set.IdleCheckFrequencytime.Duration// TLS Config to use. When set TLS will be negotiated.TLSConfig *tls.Config// contains filtered or unexported fields}funcParseURL¶
ParseURL parses an URL into Options that can be used to connect to Redis.
Example¶
package mainimport ("fmt""time""github.com/go-redis/redis")var redisdb *redis.Clientfunc init() {redisdb = redis.NewClient(&redis.Options{Addr: ":6379",DialTimeout: 10 * time.Second,ReadTimeout: 30 * time.Second,WriteTimeout: 30 * time.Second,PoolSize: 10,PoolTimeout: 30 * time.Second,})}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:6379db is 1password is qwerty
typePipeline¶
type Pipeline struct {// contains filtered or unexported fields}Pipeline implements pipelining as described inhttp://redis.io/topics/pipelining. It's safe for concurrent useby multiple goroutines.
Example (Instrumentation)¶
package mainimport ("fmt""github.com/go-redis/redis")func main() {redisdb := redis.NewClient(&redis.Options{Addr: ":6379",})redisdb.WrapProcessPipeline(func(old func([]redis.Cmder) error) func([]redis.Cmder) error {return func(cmds []redis.Cmder) error {fmt.Printf("pipeline starting processing: %v\n", cmds)err := old(cmds)fmt.Printf("pipeline finished processing: %v\n", cmds)return err}})redisdb.Pipelined(func(pipe redis.Pipeliner) error {pipe.Ping()pipe.Ping()return nil})}Output:pipeline starting processing: [ping: ping: ]pipeline finished processing: [ping: PONG ping: PONG]
func (*Pipeline)ClientSetName¶
ClientSetName assigns a name to the connection.
func (*Pipeline)Exec¶
Exec executes all previously queued commands using oneclient-server roundtrip.
Exec always returns list of commands and error of the first failedcommand if any.
func (*Pipeline)TxPipeline¶
typePipeliner¶
type Pipeliner interface {StatefulCmdableDo(args ...interface{}) *CmdProcess(cmdCmder)errorClose()errorDiscard()errorExec() ([]Cmder,error)}Pipeliner is an mechanism to realise Redis Pipeline technique.
Pipelining is a technique to extremely speed up processing by packingoperations to batches, send them at once to Redis and read a replies in asinge step.Seehttps://redis.io/topics/pipelining
Pay attention, that Pipeline is not a transaction, so you can get unexpectedresults in case of big pipelines and small read/write timeouts.Redis client has retransmission logic in case of timeouts, pipelinecan be retransmitted and commands can be executed more then once.To avoid this: it is good idea to use reasonable bigger read/write timeoutsdepends of your batch size and/or use TxPipeline.
typePong¶
type Pong struct {Payloadstring}Pong received as result of a PING command issued by another client.
typePubSub¶
type PubSub struct {// contains filtered or unexported fields}PubSub implements Pub/Sub commands as described inhttp://redis.io/topics/pubsub. Message receiving is NOT safefor concurrent use by multiple goroutines.
PubSub automatically reconnects to Redis Server and resubscribesto the channels in case of network errors.
Example¶
package mainimport ("fmt""time""github.com/go-redis/redis")var redisdb *redis.Clientfunc init() {redisdb = redis.NewClient(&redis.Options{Addr: ":6379",DialTimeout: 10 * time.Second,ReadTimeout: 30 * time.Second,WriteTimeout: 30 * time.Second,PoolSize: 10,PoolTimeout: 30 * time.Second,})}func main() {pubsub := redisdb.Subscribe("mychannel1")// Wait for confirmation that subscription is created before publishing anything._, err := pubsub.Receive()if err != nil {panic(err)}// Go channel which receives messages.ch := pubsub.Channel()// Publish a message.err = redisdb.Publish("mychannel1", "hello").Err()if err != nil {panic(err)}time.AfterFunc(time.Second, func() {// When pubsub is closed channel is closed too._ = pubsub.Close()})// Consume messages.for msg := range ch {fmt.Println(msg.Channel, msg.Payload)}}Output:mychannel1 hello
func (*PubSub)Channel¶
Channel returns a Go channel for concurrently receiving messages.It periodically sends Ping messages to test connection health.The channel is closed with PubSub. Receive* APIs can not be usedafter channel is created.
If the Go channel is full for 30 seconds the message is dropped.
func (*PubSub)ChannelSize¶
ChannelSize is like Channel, but creates a Go channelwith specified buffer size.
func (*PubSub)PSubscribe¶
PSubscribe the client to the given patterns. It returnsempty subscription if there are no patterns.
func (*PubSub)PUnsubscribe¶
PUnsubscribe the client from the given patterns, or from all ofthem 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 in most casesChannel should be used instead.
Example¶
package mainimport ("fmt""time""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {pubsub := redisdb.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 := redisdb.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 redisdb// received hello from mychannel2}func (*PubSub)ReceiveMessage¶
ReceiveMessage returns a Message or error ignoring Subscription and Pongmessages. This is low-level API and in most cases Channel should be usedinstead.
func (*PubSub)ReceiveTimeout¶
ReceiveTimeout acts like Receive but returns an error if messageis not received in time. This is low-level API and in most casesChannel should be used instead.
func (*PubSub)Subscribe¶
Subscribe the client to the specified channels. It returnsempty subscription if there are no channels.
func (*PubSub)Unsubscribe¶
Unsubscribe the client from the given channels, or from all ofthem if none is given.
typeRing¶
type Ring struct {// contains filtered or unexported fields}Ring is a Redis client that uses consistent hashing to distributekeys across multiple Redis servers (shards). It's safe forconcurrent use by multiple goroutines.
Ring monitors the state of each shard and removes dead shards fromthe ring. When a shard comes online it is added back to the ring. Thisgives you maximum availability and partition tolerance, but noconsistency between different shards or even clients. Each clientuses shards that are available to the client and does not do anycoordination when shard state is changed.
Ring should be used when you need multiple Redis servers for cachingand can tolerate losing data when one of the servers dies.Otherwise you should use Redis Cluster.
funcNewRing¶
func NewRing(opt *RingOptions) *Ring
Example¶
package mainimport ("github.com/go-redis/redis")func main() {redisdb := redis.NewRing(&redis.RingOptions{Addrs: map[string]string{"shard1": ":7000","shard2": ":7001","shard3": ":7002",},})redisdb.Ping()}func (*Ring)BRPopLPush¶
func (*Ring)BZPopMax¶
func (c *Ring) BZPopMax(timeouttime.Duration, keys ...string) *ZWithKeyCmd
Redis `BZPOPMAX key [key ...] timeout` command.
func (*Ring)BZPopMin¶
func (c *Ring) BZPopMin(timeouttime.Duration, keys ...string) *ZWithKeyCmd
Redis `BZPOPMIN key [key ...] timeout` command.
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)ClientKillByFilter¶
ClientKillByFilter is new style synx, while the ClientKill is oldCLIENT KILL <option> [value] ... <option> [value]
func (*Ring)ClientList¶
func (c *Ring) ClientList() *StringCmd
func (*Ring)ClientPause¶
func (*Ring)ClientUnblock¶
func (*Ring)ClientUnblockWithError¶
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-livedand 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)ClusterGetKeysInSlot¶
func (c *Ring) ClusterGetKeysInSlot(slotint, countint) *StringSliceCmd
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(nodeIDstring) *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)ConfigRewrite¶
func (c *Ring) ConfigRewrite() *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(keystring, geoLocation ...*GeoLocation) *IntCmd
func (*Ring)GeoHash¶
func (c *Ring) GeoHash(keystring, members ...string) *StringSliceCmd
func (*Ring)GeoRadius¶
func (c *Ring) GeoRadius(keystring, longitude, latitudefloat64, query *GeoRadiusQuery) *GeoLocationCmd
func (*Ring)GeoRadiusByMember¶
func (c *Ring) GeoRadiusByMember(key, memberstring, query *GeoRadiusQuery) *GeoLocationCmd
func (*Ring)GeoRadiusByMemberRO¶
func (c *Ring) GeoRadiusByMemberRO(key, memberstring, query *GeoRadiusQuery) *GeoLocationCmd
func (*Ring)GeoRadiusRO¶
func (c *Ring) GeoRadiusRO(keystring, longitude, latitudefloat64, query *GeoRadiusQuery) *GeoLocationCmd
func (*Ring)HGetAll¶
func (c *Ring) HGetAll(keystring) *StringStringMapCmd
func (*Ring)HIncrByFloat¶
func (*Ring)HKeys¶
func (c *Ring) HKeys(keystring) *StringSliceCmd
func (*Ring)HVals¶
func (c *Ring) HVals(keystring) *StringSliceCmd
func (*Ring)IncrByFloat¶
func (*Ring)Keys¶
func (c *Ring) Keys(patternstring) *StringSliceCmd
func (*Ring)LInsertAfter¶
func (*Ring)LInsertBefore¶
func (*Ring)LRange¶
func (c *Ring) LRange(keystring, start, stopint64) *StringSliceCmd
func (*Ring)MemoryUsage¶
func (*Ring)ObjectEncoding¶
func (*Ring)ObjectIdleTime¶
func (c *Ring) ObjectIdleTime(keystring) *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(keystring) *DurationCmd
func (*Ring)PubSubChannels¶
func (c *Ring) PubSubChannels(patternstring) *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(keystring) *StringSliceCmd
Redis `SMEMBERS key` command output as a slice
func (*Ring)SMembersMap¶
func (c *Ring) SMembersMap(keystring) *StringStructMapCmd
Redis `SMEMBERS key` command output as a map
func (*Ring)SPopN¶
func (c *Ring) SPopN(keystring, countint64) *StringSliceCmd
Redis `SPOP key count` command.
func (*Ring)SRandMember¶
Redis `SRANDMEMBER key` command.
func (*Ring)SRandMemberN¶
func (c *Ring) SRandMemberN(keystring, countint64) *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(hashes ...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(keystring, sort *Sort) *StringSliceCmd
func (*Ring)SortInterfaces¶
func (*Ring)TTL¶
func (c *Ring) TTL(keystring) *DurationCmd
func (*Ring)TxPipeline¶
func (*Ring)WrapProcess¶
func (*Ring)WrapProcessPipeline¶
func (*Ring)XClaim¶
func (c *Ring) XClaim(a *XClaimArgs) *XMessageSliceCmd
func (*Ring)XClaimJustID¶
func (c *Ring) XClaimJustID(a *XClaimArgs) *StringSliceCmd
func (*Ring)XGroupCreate¶
func (*Ring)XGroupCreateMkStream¶
func (*Ring)XGroupDelConsumer¶
func (*Ring)XGroupDestroy¶
func (*Ring)XGroupSetID¶
func (*Ring)XPending¶
func (c *Ring) XPending(stream, groupstring) *XPendingCmd
func (*Ring)XPendingExt¶
func (c *Ring) XPendingExt(a *XPendingExtArgs) *XPendingExtCmd
func (*Ring)XRange¶
func (c *Ring) XRange(stream, start, stopstring) *XMessageSliceCmd
func (*Ring)XRangeN¶
func (c *Ring) XRangeN(stream, start, stopstring, countint64) *XMessageSliceCmd
func (*Ring)XRead¶
func (c *Ring) XRead(a *XReadArgs) *XStreamSliceCmd
func (*Ring)XReadGroup¶
func (c *Ring) XReadGroup(a *XReadGroupArgs) *XStreamSliceCmd
func (*Ring)XReadStreams¶
func (c *Ring) XReadStreams(streams ...string) *XStreamSliceCmd
func (*Ring)XRevRange¶
func (c *Ring) XRevRange(stream, start, stopstring) *XMessageSliceCmd
func (*Ring)XRevRangeN¶
func (c *Ring) XRevRangeN(stream, start, stopstring, countint64) *XMessageSliceCmd
func (*Ring)XTrimApprox¶
func (*Ring)ZInterStore¶
func (*Ring)ZRange¶
func (c *Ring) ZRange(keystring, start, stopint64) *StringSliceCmd
func (*Ring)ZRangeByLex¶
func (c *Ring) ZRangeByLex(keystring, optZRangeBy) *StringSliceCmd
func (*Ring)ZRangeByScore¶
func (c *Ring) ZRangeByScore(keystring, optZRangeBy) *StringSliceCmd
func (*Ring)ZRangeByScoreWithScores¶
func (*Ring)ZRangeWithScores¶
func (*Ring)ZRemRangeByLex¶
func (*Ring)ZRemRangeByRank¶
func (*Ring)ZRemRangeByScore¶
func (*Ring)ZRevRange¶
func (c *Ring) ZRevRange(keystring, start, stopint64) *StringSliceCmd
func (*Ring)ZRevRangeByLex¶
func (c *Ring) ZRevRangeByLex(keystring, optZRangeBy) *StringSliceCmd
func (*Ring)ZRevRangeByScore¶
func (c *Ring) ZRevRangeByScore(keystring, optZRangeBy) *StringSliceCmd
func (*Ring)ZRevRangeByScoreWithScores¶
func (*Ring)ZRevRangeWithScores¶
typeRingOptions¶
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.HeartbeatFrequencytime.Duration// Hash function used in consistent hash.// Default is crc32.ChecksumIEEE.HashHash// Number of replicas in consistent hash.// Default is 100 replicas.//// Higher number of replicas will provide less deviation, that is keys will be// distributed to nodes more evenly.//// Following is deviation for common nreplicas:// --------------------------------------------------------// | nreplicas | standard error | 99% confidence interval |// | 10 | 0.3152 | (0.37, 1.98) |// | 100 | 0.0997 | (0.76, 1.28) |// | 1000 | 0.0316 | (0.92, 1.09) |// --------------------------------------------------------//// Seehttps://arxiv.org/abs/1406.2294 for referenceHashReplicasintOnConnect func(*Conn)errorDBintPasswordstringMaxRetriesintMinRetryBackofftime.DurationMaxRetryBackofftime.DurationDialTimeouttime.DurationReadTimeouttime.DurationWriteTimeouttime.DurationPoolSizeintMinIdleConnsintMaxConnAgetime.DurationPoolTimeouttime.DurationIdleTimeouttime.DurationIdleCheckFrequencytime.Duration}RingOptions are used to configure a ring client and should bepassed to NewRing.
typeScanCmd¶
type ScanCmd struct {// contains filtered or unexported fields}funcNewScanCmd¶
funcNewScanCmdResult¶
NewScanCmdResult returns a ScanCmd initialised with val and err for testing
func (*ScanCmd)Iterator¶
func (cmd *ScanCmd) Iterator() *ScanIterator
Iterator creates a new ScanIterator.
Example¶
package mainimport ("fmt""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {iter := redisdb.Scan(0, "", 0).Iterator()for iter.Next() {fmt.Println(iter.Val())}if err := iter.Err(); err != nil {panic(err)}}typeScanIterator¶
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 mainimport ("fmt""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {iter := redisdb.Scan(0, "", 0).Iterator()for iter.Next() {fmt.Println(iter.Val())}if err := iter.Err(); err != nil {panic(err)}}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.
typeScript¶
type Script struct {// contains filtered or unexported fields}Example¶
package mainimport ("fmt""github.com/go-redis/redis")var redisdb *redis.Clientfunc main() {IncrByXX := redis.NewScript(`if redis.call("GET", KEYS[1]) ~= false thenreturn redis.call("INCRBY", KEYS[1], ARGV[1])endreturn false`)n, err := IncrByXX.Run(redisdb, []string{"xx_counter"}, 2).Result()fmt.Println(n, err)err = redisdb.Set("xx_counter", "40", 0).Err()if err != nil {panic(err)}n, err = IncrByXX.Run(redisdb, []string{"xx_counter"}, 2).Result()fmt.Println(n, err)}Output:<nil> redis: nil42 <nil>
func (*Script)Exists¶
func (s *Script) Exists(c scripter) *BoolSliceCmd
typeSentinelClient¶
type SentinelClient struct {// contains filtered or unexported fields}funcNewSentinelClient¶
func NewSentinelClient(opt *Options) *SentinelClient
func (*SentinelClient)Close¶
func (c *SentinelClient) Close()error
Close closes the client, releasing any open resources.
It is rare to Close a Client, as the Client is meant to belong-lived and shared between many goroutines.
func (*SentinelClient)Do¶
func (c *SentinelClient) Do(args ...interface{}) *CmdDo creates a Cmd from the args and processes the cmd.
func (*SentinelClient)Failover¶
func (c *SentinelClient) Failover(namestring) *StatusCmd
Failover forces a failover as if the master was not reachable, and withoutasking for agreement to other Sentinels.
func (*SentinelClient)FlushConfig¶
func (c *SentinelClient) FlushConfig() *StatusCmd
FlushConfig forces Sentinel to rewrite its configuration on disk, includingthe current Sentinel state.
func (*SentinelClient)GetMasterAddrByName¶
func (c *SentinelClient) GetMasterAddrByName(namestring) *StringSliceCmd
func (*SentinelClient)Master¶
func (c *SentinelClient) Master(namestring) *StringStringMapCmd
Master shows the state and info of the specified master.
func (*SentinelClient)PSubscribe¶
func (c *SentinelClient) PSubscribe(channels ...string) *PubSub
PSubscribe subscribes the client to the given patterns.Patterns can be omitted to create empty subscription.
func (*SentinelClient)Reset¶
func (c *SentinelClient) Reset(patternstring) *IntCmd
Reset resets all the masters with matching name. The pattern argument is aglob-style pattern. The reset process clears any previous state in a master(including a failover in progress), and removes every slave and sentinelalready discovered and associated with the master.
func (*SentinelClient)Sentinels¶
func (c *SentinelClient) Sentinels(namestring) *SliceCmd
func (*SentinelClient)Subscribe¶
func (c *SentinelClient) Subscribe(channels ...string) *PubSub
Subscribe subscribes the client to the specified channels.Channels can be omitted to create empty subscription.
func (*SentinelClient)WrapProcess¶
WrapProcess wraps function that processes Redis commands.
typeSliceCmd¶
type SliceCmd struct {// contains filtered or unexported fields}funcNewSliceCmd¶
func NewSliceCmd(args ...interface{}) *SliceCmdfuncNewSliceResult¶
NewSliceResult returns a SliceCmd initialised with val and err for testing
typeStatefulCmdable¶
typeStatusCmd¶
type StatusCmd struct {// contains filtered or unexported fields}funcNewStatusCmd¶
func NewStatusCmd(args ...interface{}) *StatusCmdfuncNewStatusResult¶
NewStatusResult returns a StatusCmd initialised with val and err for testing
typeStringCmd¶
type StringCmd struct {// contains filtered or unexported fields}funcNewStringCmd¶
func NewStringCmd(args ...interface{}) *StringCmdfuncNewStringResult¶
NewStringResult returns a StringCmd initialised with val and err for testing
typeStringIntMapCmd¶
type StringIntMapCmd struct {// contains filtered or unexported fields}funcNewStringIntMapCmd¶
func NewStringIntMapCmd(args ...interface{}) *StringIntMapCmdfuncNewStringIntMapCmdResult¶
func NewStringIntMapCmdResult(val map[string]int64, errerror) *StringIntMapCmd
NewStringIntMapCmdResult returns a StringIntMapCmd initialised with val and err for testing
func (*StringIntMapCmd)String¶
func (cmd *StringIntMapCmd) String()string
func (*StringIntMapCmd)Val¶
func (cmd *StringIntMapCmd) Val() map[string]int64
typeStringSliceCmd¶
type StringSliceCmd struct {// contains filtered or unexported fields}funcNewStringSliceCmd¶
func NewStringSliceCmd(args ...interface{}) *StringSliceCmdfuncNewStringSliceResult¶
func NewStringSliceResult(val []string, errerror) *StringSliceCmd
NewStringSliceResult returns a StringSliceCmd initialised 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
typeStringStringMapCmd¶
type StringStringMapCmd struct {// contains filtered or unexported fields}funcNewStringStringMapCmd¶
func NewStringStringMapCmd(args ...interface{}) *StringStringMapCmdfuncNewStringStringMapResult¶
func NewStringStringMapResult(val map[string]string, errerror) *StringStringMapCmd
NewStringStringMapResult returns a StringStringMapCmd initialised with val and err for testing
func (*StringStringMapCmd)String¶
func (cmd *StringStringMapCmd) String()string
func (*StringStringMapCmd)Val¶
func (cmd *StringStringMapCmd) Val() map[string]string
typeStringStructMapCmd¶
type StringStructMapCmd struct {// contains filtered or unexported fields}funcNewStringStructMapCmd¶
func NewStringStructMapCmd(args ...interface{}) *StringStructMapCmdfunc (*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{}
typeSubscription¶
type Subscription struct {// Can be "subscribe", "unsubscribe", "psubscribe" or "punsubscribe".Kindstring// Channel name we have subscribed to.Channelstring// Number of channels we are currently subscribed to.Countint}Subscription received after a successful subscription to channel.
func (*Subscription)String¶
func (m *Subscription) String()string
typeTimeCmd¶
type TimeCmd struct {// contains filtered or unexported fields}funcNewTimeCmd¶
func NewTimeCmd(args ...interface{}) *TimeCmdtypeTx¶
type Tx struct {// contains filtered or unexported fields}Tx implements Redis transactions as described inhttp://redis.io/topics/transactions. It's NOT safe for concurrent useby 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)Do¶
func (c *Tx) Do(args ...interface{}) *CmdDo creates a Cmd from the args and processes the cmd.
func (*Tx)Pipelined¶
Pipelined executes commands queued in the fn in a transaction.
When using WATCH, EXEC will execute commands only if the watched keyswere not modified, allowing for a check-and-set mechanism.
Exec always returns list of commands. If transaction failsTxFailedErr is returned. Otherwise Exec returns an error of the firstfailed command or nil.
func (*Tx)TxPipelined¶
TxPipelined is an alias for Pipelined.
func (*Tx)WrapProcess¶
WrapProcess wraps function that processes Redis commands.
typeUniversalClient¶
type UniversalClient interface {CmdableWatch(fn func(*Tx)error, keys ...string)errorProcess(cmdCmder)errorWrapProcess(fn func(oldProcess func(cmdCmder)error) func(cmdCmder)error)WrapProcessPipeline(fn func(oldProcess func([]Cmder)error) func([]Cmder)error)Subscribe(channels ...string) *PubSubPSubscribe(channels ...string) *PubSubClose()error}UniversalClient is an abstract client which - based on the provided options -can connect to either clusters, or sentinel-backed failover instances or simplesingle-instance servers. This can be useful for testing cluster-specificapplications locally.
funcNewUniversalClient¶
func NewUniversalClient(opts *UniversalOptions)UniversalClient
NewUniversalClient returns a new multi client. The type of client returned dependson the following three conditions:
1. if a MasterName is passed a sentinel-backed FailoverClient will be returned2. if the number of Addrs is two or more, a ClusterClient will be returned3. otherwise, a single-node redis Client will be returned.
Example (Cluster)¶
package mainimport ("github.com/go-redis/redis")func main() {redisdb := redis.NewUniversalClient(&redis.UniversalOptions{Addrs: []string{":7000", ":7001", ":7002", ":7003", ":7004", ":7005"},})defer redisdb.Close()redisdb.Ping()}Example (Failover)¶
package mainimport ("github.com/go-redis/redis")func main() {redisdb := redis.NewUniversalClient(&redis.UniversalOptions{MasterName: "master",Addrs: []string{":26379"},})defer redisdb.Close()redisdb.Ping()}Example (Simple)¶
package mainimport ("github.com/go-redis/redis")func main() {redisdb := redis.NewUniversalClient(&redis.UniversalOptions{Addrs: []string{":6379"},})defer redisdb.Close()redisdb.Ping()}typeUniversalOptions¶
type UniversalOptions struct {// Either a single address or a seed list of host:port addresses// of cluster/sentinel nodes.Addrs []string// Database to be selected after connecting to the server.// Only single-node and failover clients.DBintOnConnect func(*Conn)errorPasswordstringMaxRetriesintMinRetryBackofftime.DurationMaxRetryBackofftime.DurationDialTimeouttime.DurationReadTimeouttime.DurationWriteTimeouttime.DurationPoolSizeintMinIdleConnsintMaxConnAgetime.DurationPoolTimeouttime.DurationIdleTimeouttime.DurationIdleCheckFrequencytime.DurationTLSConfig *tls.ConfigMaxRedirectsintReadOnlyboolRouteByLatencyboolRouteRandomlybool// The sentinel master name.// Only failover clients.MasterNamestring}UniversalOptions information is required by UniversalClient to establishconnections.
typeXClaimArgs¶
typeXMessageSliceCmd¶
type XMessageSliceCmd struct {// contains filtered or unexported fields}funcNewXMessageSliceCmd¶
func NewXMessageSliceCmd(args ...interface{}) *XMessageSliceCmdfunc (*XMessageSliceCmd)Result¶
func (cmd *XMessageSliceCmd) Result() ([]XMessage,error)
func (*XMessageSliceCmd)String¶
func (cmd *XMessageSliceCmd) String()string
func (*XMessageSliceCmd)Val¶
func (cmd *XMessageSliceCmd) Val() []XMessage
typeXPendingCmd¶
type XPendingCmd struct {// contains filtered or unexported fields}funcNewXPendingCmd¶
func NewXPendingCmd(args ...interface{}) *XPendingCmdfunc (*XPendingCmd)Result¶
func (cmd *XPendingCmd) Result() (*XPending,error)
func (*XPendingCmd)String¶
func (cmd *XPendingCmd) String()string
func (*XPendingCmd)Val¶
func (cmd *XPendingCmd) Val() *XPending
typeXPendingExtArgs¶
typeXPendingExtCmd¶
type XPendingExtCmd struct {// contains filtered or unexported fields}funcNewXPendingExtCmd¶
func NewXPendingExtCmd(args ...interface{}) *XPendingExtCmdfunc (*XPendingExtCmd)Result¶
func (cmd *XPendingExtCmd) Result() ([]XPendingExt,error)
func (*XPendingExtCmd)String¶
func (cmd *XPendingExtCmd) String()string
func (*XPendingExtCmd)Val¶
func (cmd *XPendingExtCmd) Val() []XPendingExt
typeXReadGroupArgs¶
typeXStreamSliceCmd¶
type XStreamSliceCmd struct {// contains filtered or unexported fields}funcNewXStreamSliceCmd¶
func NewXStreamSliceCmd(args ...interface{}) *XStreamSliceCmdfunc (*XStreamSliceCmd)Result¶
func (cmd *XStreamSliceCmd) Result() ([]XStream,error)
func (*XStreamSliceCmd)String¶
func (cmd *XStreamSliceCmd) String()string
func (*XStreamSliceCmd)Val¶
func (cmd *XStreamSliceCmd) Val() []XStream
typeZSliceCmd¶
type ZSliceCmd struct {// contains filtered or unexported fields}funcNewZSliceCmd¶
func NewZSliceCmd(args ...interface{}) *ZSliceCmdfuncNewZSliceCmdResult¶
NewZSliceCmdResult returns a ZSliceCmd initialised with val and err for testing
typeZWithKey¶
ZWithKey represents sorted set member including the name of the key where it was popped.
typeZWithKeyCmd¶
type ZWithKeyCmd struct {// contains filtered or unexported fields}funcNewZWithKeyCmd¶
func NewZWithKeyCmd(args ...interface{}) *ZWithKeyCmdfunc (*ZWithKeyCmd)Result¶
func (cmd *ZWithKeyCmd) Result() (ZWithKey,error)
func (*ZWithKeyCmd)String¶
func (cmd *ZWithKeyCmd) String()string
func (*ZWithKeyCmd)Val¶
func (cmd *ZWithKeyCmd) Val()ZWithKey
Source Files¶
Directories¶
| Path | Synopsis |
|---|---|
example | |
del-keys-without-ttlmodule | |
hllmodule | |
otelmodule | |
redis-bloommodule | |
scan-structmodule | |
extra | |
rediscensusmodule | |
rediscmdmodule | |
redisotelmodule | |
redisprometheusmodule | |
consistenthash Package consistenthash provides an implementation of a ring hash. | Package consistenthash provides an implementation of a ring hash. |
customvetmodule |
