Documentation ¶
Index ¶
- Constants
- Variables
- type BulkString
- type ChanAndSub
- type ChanAndSubs
- type ClientConfig
- type Cluster
- type ClusterConfig
- type Config
- type Connection
- type Factory
- type FailoverConfig
- type FlushOption
- type FutureMultiValue
- type GEO
- type Generic
- type Hashes
- type HyperLogLog
- type KeyAndValue
- type KeyAndValues
- type KeyType
- type Lists
- type MemberAndScore
- type MemberAndScores
- type MemberRange
- type MultiValue
- func (mv MultiValue) Bool() (v bool, ok bool)
- func (mv MultiValue) BulkString() (v BulkString, ok bool)
- func (mv MultiValue) Duration() (d time.Duration, ok bool)
- func (mv MultiValue) Err() error
- func (mv MultiValue) Float64() (n float64, ok bool)
- func (mv MultiValue) Int() (n int, ok bool)
- func (mv MultiValue) Int64() (n int64, ok bool)
- func (mv MultiValue) IsErr() bool
- func (mv MultiValue) IsNil() bool
- func (mv MultiValue) KeyAndValue() (kv KeyAndValue, ok bool)
- func (mv MultiValue) MemberAndScore() (ms MemberAndScore, ok bool)
- func (mv MultiValue) MultiValues() (mvs []MultiValue, ok bool)
- func (mv MultiValue) Status() (s string, ok bool)
- func (mv MultiValue) String() string
- func (mv MultiValue) Time() (t time.Time, ok bool)
- type PubSub
- type RangeOption
- type Redis
- type Scan
- type ScanOption
- type ScoreRange
- type Scripting
- type Server
- type SetOption
- type Sets
- type SortedSets
- type StoreOption
- type Streams
- type Strings
- type Transactions
Constants ¶
Variables ¶
var ( // ErrKeyNotExist 是当 key 找不到时返回的错误。 ErrKeyNotExist = errors.New("go-redis: key does not exist") // ErrKeyHasNoExpiration 是当 key 没有设置超时时间、使用 TTL/PTTL 时返回的错误。 ErrKeyHasNoExpiration = errors.New("go-redis: key exists but has no associated expire") // ErrNotImplemented 表示这个功能还未实现。 ErrNotImplemented = errors.New("go0redis: command is not implemented") // ErrUnexpectedResponseType 表示一个不支持的 redis 应答格式,一般都是这个库的 bug。 ErrUnexpectedResponseType = errors.New("go-redis: unexpected type of the response") // ErrUnsupportedValueType 表示 redis 返回值的类型不支持,一般都是使用了还没实现的功能导致的。 ErrUnsupportedValueType = errors.New("go-redis: unsupported value type") )
Functions ¶
This section is empty.
Types ¶
type BulkString ¶
type BulkString struct {
// contains filtered or unexported fields
}
BulkString 代表 Redis 协议中的 Bulk String 类型, 详见 https://redis.io/topics/protocol#bulk-string-reply。
func MakeBulkString ¶
func MakeBulkString(str string) BulkString
MakeBulkString 将 str 包装成 BulkString。
func (BulkString) String ¶
func (bs BulkString) String() string
String 返回 bs 内部的字符串,如果 bs 为空,返回空字符串。
type ChanAndSub ¶
ChanAndSub 代表一对 channel 和 subscriber。
func MakeChanAndSub ¶
func MakeChanAndSub(ch string, sub int) ChanAndSub
MakeChanAndSub 可以方便的创建一个 ChanAndSub 实例。
type ClientConfig ¶
type ClientConfig struct { Addr string `config:"addr"` // Addr 配置 Redis 服务地址。 Password string `config:"password"` // Password 配置连接 Redis 的密码。 DB int `config:"db"` // DB 配置连接上 Redis 后默认选择的数据库。 DialTimeout time.Duration `config:"dail_timeout"` // DialTimeout 配置连接超时,默认是 DefaultDialTimeout。 ReadTimeout time.Duration `config:"read_timeout"` // ReadTimeout 配置读超时,默认是 DefaultReadTimeout。 WriteTimeout time.Duration `config:"write_timeout"` // WriteTimeout 配置写超时,默认是 DefaultWriteTimeout。 PoolSize int `config:"pool_size"` // PoolSize 配置连接池大小。 }
ClientConfig 代表 Redis 直连模式的配置。 TODO: 补充更多配置项。
type Cluster ¶
type Cluster interface { }
Cluster 代表 Redis 跟集群相关的接口,详见 https://redis.io/commands#cluster。
type ClusterConfig ¶
type ClusterConfig struct { Addrs []string `config:"addrs"` // Addrs 配置 Redis cluster 地址。 Password string `config:"password"` // Password 配置连接 Redis 的密码。 DialTimeout time.Duration `config:"dail_timeout"` // DialTimeout 配置连接超时,默认是 DefaultDialTimeout。 ReadTimeout time.Duration `config:"read_timeout"` // ReadTimeout 配置读超时,默认是 DefaultReadTimeout。 WriteTimeout time.Duration `config:"write_timeout"` // WriteTimeout 配置写超时,默认是 DefaultWriteTimeout。 PoolSize int `config:"pool_size"` // PoolSize 配置连接池大小。 }
ClusterConfig 代表 Redis cluster 配置。 TODO: 补充更多配置项。
type Config ¶
type Config struct { Client *ClientConfig `config:"client"` // Client 是直连模式的配置。 Cluster *ClusterConfig `config:"cluster"` // Cluster 是集群模式的配置。 Failover *FailoverConfig `config:"failover"` // Failover 是 failover client 的配置。 }
Config 代表一个 Redis 连接池工厂配置。
由于 Redis 有多种不兼容的连接池,这个类型由一系列子配置组成,如果同时设置了多个配置,生效的优先顺序如下:
- ClientConfig
- ClusterConfig
- FailoverConfig
- RingConfig TODO:
- SentinelConfig TODO:
- UniversalConfig TODO:
type Connection ¶
type Connection interface { Echo(msg string) (echo BulkString, err error) Ping() (err error) }
Connection 代表 Redis 跟连接相关的接口,详见 https://redis.io/commands#connection。
注意:由于 `SELECT` 和 `SWAPDB` 在 Redis Cluster 模式下已经没有用, 我们应该始终会使用 Redis Cluster 或者其他 Redis proxy 来实现高可用, 可以预计这两个接口应该永远不会用到,因此无需定义。
另外,`AUTH` 接口不做封装,密码验证的工作已经在框架层完成。
type Factory ¶
type Factory struct {
// contains filtered or unexported fields
}
Factory 管理 Redis 连接池,并提供接口从连接池中取出可用的 Redis 连接。
type FailoverConfig ¶
type FailoverConfig struct { MasterName string `config:"master_name"` // MasterName 代表 master 结点的名字。 SentinelAddrs []string `config:"sentinel_addrs"` // SentinelAddrs 是哨兵地址。 Password string `config:"password"` // Password 配置连接 Redis 的密码。 DialTimeout time.Duration `config:"dail_timeout"` // DialTimeout 配置连接超时,默认是 DefaultDialTimeout。 ReadTimeout time.Duration `config:"read_timeout"` // ReadTimeout 配置读超时,默认是 DefaultReadTimeout。 WriteTimeout time.Duration `config:"write_timeout"` // WriteTimeout 配置写超时,默认是 DefaultWriteTimeout。 PoolSize int `config:"pool_size"` // PoolSize 配置连接池大小。 }
FailoverConfig 代表 Redis failover client 配置。 TODO: 补充更多配置项。
type FutureMultiValue ¶
type FutureMultiValue struct {
// contains filtered or unexported fields
}
FutureMultiValue 表示一个还未获得结果的 MultiValue, 一般来说使用者不需要直接用这个结构,而是把它当做 error 来用, 使用 MakeMultiValue 来还原里面的值。
FutureMultiValue 实现了 error 接口, transaction 或 pipeline 中的所有 redis 接口调用都会返回一个 FutureMultiValue error, 使用者可以将这个 error 存起来,等 transaction 或 pipeline 提交之后 再用 MakeMultiValue 转化成真正的 MultiValue。
例如:
var futureValue error _, err := client.Multi(r redis.Redis) error { r.Set("foo", "2") r.Incr("foo") _, futureValue = r.Get("foo") }) /* 检查 err,这里略过 */ // 使用 MakeMultiValue 获得真正的 MultiValue。 val := redis.MakeMultiValue(futureValue) v, ok := val.Value() fmt.Println(v, ok) // Output: 3 true
func (*FutureMultiValue) MultiValue ¶
func (fmv *FutureMultiValue) MultiValue() MultiValue
MultiValue 返回内部的 MultiValue 值,如果值为空, 会返回一个 IsNil 为 true 的 MultiValue。
type Generic ¶
type Generic interface { Del(keys ...string) (deleted int, err error) Dump(key string) (value BulkString, err error) Exists(keys ...string) (existing int, err error) Expire(key string, timeout time.Duration) (isSet bool, err error) ExpireAt(key string, t time.Time) (isSet bool, err error) Keys(pattern string) (keys []BulkString, err error) Persist(key string) (persisted bool, err error) RandomKey() (key BulkString, err error) Rename(old, new string) (err error) RenameNX(old, new string) (renamed bool, err error) Touch(keys ...string) (touched int, err error) TTL(key string) (ttl time.Duration, err error) Type(key string) (keyType KeyType, err error) Unlink(keys ...string) (unlinked int, err error) }
Generic 代表 Redis 各种经典 K/V 接口,详见 https://redis.io/commands#generic。
注意,WAIT 不是用户使用的命令,这里不支持。
type Hashes ¶
type Hashes interface { HDel(key string, fields ...string) (deleted int, err error) HExists(key string, field string) (exists bool, err error) HGet(key string, field string) (value BulkString, err error) HGetAll(key string) (fieldAndValues KeyAndValues, err error) HIncrBy(key string, field string, incr int64) (value int64, err error) HIncrByFloat(key string, field string, incr float64) (value float64, err error) HKeys(key string) (keys []BulkString, err error) HLen(key string) (l int, err error) HMGet(key string, fields ...string) (values []BulkString, err error) HMSet(key string, fieldAndValues ...KeyAndValue) (err error) HSet(key string, field string, value string) (isNew bool, err error) HSetNX(key string, field string, value string) (isNew bool, err error) HVals(key string) (values []BulkString, err error) }
Hashes 代表 Redis 跟 hash 相关的接口,详见 https://redis.io/commands#hash。
type HyperLogLog ¶
type HyperLogLog interface { }
HyperLogLog 代表 Redis 跟 HyperLogLog 相关的接口,详见 https://redis.io/commands#hyperloglog。
type KeyAndValue ¶
KeyAndValue 代表一对 K/V 组合。
func MakeKeyAndValue ¶
func MakeKeyAndValue(key string, value string) KeyAndValue
MakeKeyAndValue 可以方便的创建一个 KeyAndValue 实例。
type Lists ¶
type Lists interface { LIndex(key string, index int) (value BulkString, err error) LInsertBefore(key string, pivot string, value string) (l int, err error) LInsertAfter(key string, pivot string, value string) (l int, err error) LLen(key string) (l int, err error) LPop(key string) (value BulkString, err error) LPush(key string, values ...string) (l int, err error) LPushX(key string, value string) (l int, err error) LRange(key string, start int, stop int) (values []BulkString, err error) LRem(key string, count int, value string) (removed int, err error) LSet(key string, index int, value string) (err error) LTrim(key string, start int, stop int) (err error) RPop(key string) (value BulkString, err error) RPopLPush(src string, dst string) (value BulkString, err error) RPush(key string, values ...string) (l int, err error) RPushX(key string, value string) (l int, err error) }
Lists 代表 Redis 跟 list 相关的接口,详见 https://redis.io/commands#list。
type MemberAndScore ¶
MemberAndScore 代表 sorted set 的 member 和 score。
func MakeMemberAndScore ¶
func MakeMemberAndScore(member string, score float64) MemberAndScore
MakeMemberAndScore 可以方便的创建一个 MemberAndScore 实例。
type MemberAndScores ¶
type MemberAndScores []MemberAndScore
MemberAndScores 代表一系列 sorted set 的 member 和 score 组合。
func (MemberAndScores) Map ¶
func (mss MemberAndScores) Map() map[string]float64
Map 将 mss 转化成一个 map,方便使用。
type MemberRange ¶
type MemberRange string
MemberRange 表示一个 sorted set 里面 member 的范围。
允许的取值为:
- 包含字符串:[member1
- 不包含字符串:(member2
- 边界:-、+
const ( MemberRangeStart MemberRange = "-" MemberRangeStop MemberRange = "+" )
MemberRange 的边界值。
func MakeMemberRange ¶
func MakeMemberRange(member string) MemberRange
MakeMemberRange 将一个 member 变成 MemberRange。
默认返回的范围是包含 member 这个值的,如果希望生成一个不包含 member 的 MemberRange,应该调用
min := MakeScoreRange(1.234).Exclusive() // min == "(1.234"
func (MemberRange) Exclusive ¶
func (mr MemberRange) Exclusive() MemberRange
Exclusive 将 mr 变成 exclusive 的值。
func (MemberRange) IsValid ¶
func (mr MemberRange) IsValid() bool
IsValid 检查 lex 的合法性并返回结果。 根据 Redis 文档,lex 必须由 +、-、[ 或 ( 开头。
type MultiValue ¶
type MultiValue struct {
// contains filtered or unexported fields
}
MultiValue 存储所有合法的 Redis 值类型,包括 nil 和 error。 MULTI 和 EVAL 用它来存储返回值,调用者一般需要根据上下文来判断其中实际存储的类型是什么
func MakeMultiValue ¶
func MakeMultiValue(v interface{}) (mv MultiValue)
MakeMultiValue 将 v 包装成一个 MultiValue。 如果 v 已经是一个 MultiValue 了,会返回 v 本身。
func (MultiValue) Bool ¶
func (mv MultiValue) Bool() (v bool, ok bool)
Bool 返回 bool 值,如果 MultiValue 存储的类型不是 bool 或 int/int64,ok 为 false。如果类型是 int/int64,非 0 代表 true。
func (MultiValue) BulkString ¶
func (mv MultiValue) BulkString() (v BulkString, ok bool)
BulkString 返回 bulk string,如果 MultiValue 存储的类型不是 bulk string,ok 为 false。
func (MultiValue) Duration ¶
func (mv MultiValue) Duration() (d time.Duration, ok bool)
Duration 返回一个 time.Duration,如果 MultiValue 存储的类型不是 time.Duration,ok 为 false。
func (MultiValue) Err ¶
func (mv MultiValue) Err() error
Err 会在 MultiValue 存储的是 error 的时候返回对应的实例,否则返回 nil。
func (MultiValue) Float64 ¶
func (mv MultiValue) Float64() (n float64, ok bool)
Float64 返回 float64,如果 MultiValue 存储的类型不是 float64,ok 为 false。
func (MultiValue) Int ¶
func (mv MultiValue) Int() (n int, ok bool)
Int 返回整数,如果 MultiValue 存储的并不是 int,ok 会返回 false。 Int 不区分 int64 与 int,对于 int64 数据来说,会截断成 int 值。
func (MultiValue) Int64 ¶
func (mv MultiValue) Int64() (n int64, ok bool)
Int64 返回整数,如果 MultiValue 存储的并不是 int64,ok 会返回 false。 Int64 不区分 int64 与 int,对于 int 数据来说,会转化成 int64 值。
func (MultiValue) IsErr ¶
func (mv MultiValue) IsErr() bool
IsErr 判断值是否为一个 error,如果是 error,所有其他的方法都会返回 ok 为 false。
func (MultiValue) KeyAndValue ¶
func (mv MultiValue) KeyAndValue() (kv KeyAndValue, ok bool)
KeyAndValue 返回一个 KeyAndValue,如果 MultiValue 存储的类型不是 KeyAndValue,ok 为 false。
func (MultiValue) MemberAndScore ¶
func (mv MultiValue) MemberAndScore() (ms MemberAndScore, ok bool)
MemberAndScore 返回一个 MemberAndScore,如果 MultiValue 存储的类型不是 MemberAndScore,ok 为 false。
func (MultiValue) MultiValues ¶
func (mv MultiValue) MultiValues() (mvs []MultiValue, ok bool)
MultiValues 返回 []MultiValue,如果 MultiValue 存储的类型不是 []MultiValue,ok 为 false。
func (MultiValue) Status ¶
func (mv MultiValue) Status() (s string, ok bool)
Status 返回状态码,如果 MultiValue 存储的类型不是 Status,ok 为 false。
type PubSub ¶
type PubSub interface { }
PubSub 代表 Redis 跟 pub/sub 相关的接口,详见 https://redis.io/commands#pubsub。
type RangeOption ¶
type RangeOption struct {
// contains filtered or unexported fields
}
RangeOption 代表 sorted set 对计算结果进行范围查询时的选项。
type Redis ¶
type Redis interface { Cluster Connection Generic GEO Hashes HyperLogLog Lists PubSub Scan Scripting Server Sets SortedSets Streams Strings Transactions }
Redis 代表一个 Redis 连接。
type ScanOption ¶
type ScanOption struct {
// contains filtered or unexported fields
}
ScanOption 代表一个扫描选项。
type ScoreRange ¶
type ScoreRange string
ScoreRange 代表 sorted set 里面 score 的范围。
允许的取值为:
- 数字:-1、2.3
- 范围:(1
- 无穷:-inf、+inf
func MakeScoreRange ¶
func MakeScoreRange(score float64) ScoreRange
MakeScoreRange 将一个 score 变成 ScoreRange。
默认返回的范围是包含 score 这个值的,如果希望生成一个不包含 value 的 ScoreRange,应该调用
min := MakeScoreRange(1.234).Exclusive() // min == "(1.234"
func (ScoreRange) Exclusive ¶
func (sr ScoreRange) Exclusive() ScoreRange
Exclusive 将 sr 变成 exclusive 的值。
type Scripting ¶
type Scripting interface { }
Scripting 代表 Redis 跟 scripting 相关的接口,详见 https://redis.io/commands#scripting。
type Server ¶
type Server interface {
FlushAll(options ...FlushOption) (err error)
}
Server 代表 Redis 跟 server 相关的接口,详见 https://redis.io/commands#server。
type SetOption ¶
type SetOption struct {
// contains filtered or unexported fields
}
SetOption 代表设置一个 key 时候用到的各种选项。
func Expire ¶
Expire 返回一个用于设置 key 超时的选项。 详见 https://redis.io/commands/set。
type Sets ¶
type Sets interface { SAdd(key string, members ...string) (added int, err error) SCard(key string) (count int, err error) SDiff(keys ...string) (members []BulkString, err error) SDiffStore(dst string, keys ...string) (count int, err error) SInter(keys ...string) (members []BulkString, err error) SInterStore(dst string, keys ...string) (count int, err error) SIsMember(key string, member string) (exists bool, err error) SMembers(key string) (members []BulkString, err error) SMove(src string, dst string, member string) (moved bool, err error) SPop(key string) (member BulkString, err error) SPopN(key string, count int) (members []BulkString, err error) // SPOP key count SRandMember(key string) (member BulkString, err error) SRandMemberN(key string, count int) (members []BulkString, err error) // SRANDMEMBER key count SRem(key string, members ...string) (removed int, err error) SUnion(keys ...string) (members []BulkString, err error) SUnionStore(dst string, keys ...string) (count int, err error) }
Sets 代表 Redis 跟 set 相关的接口,详见 https://redis.io/commands#set。
type SortedSets ¶
type SortedSets interface { ZAdd(key string, mss ...MemberAndScore) (added int, err error) ZCard(key string) (count int, err error) ZCount(key string, min ScoreRange, max ScoreRange) (count int, err error) ZIncrBy(key string, incr float64, member string) (score float64, err error) ZInterStore(dst string, keys []string, options ...StoreOption) (count int, err error) ZLexCount(key string, min MemberRange, max MemberRange) (count int, err error) ZPopMax(key string) (ms MemberAndScore, err error) ZPopMaxN(key string, count int) (mss MemberAndScores, err error) ZPopMin(key string) (ms MemberAndScore, err error) ZPopMinN(key string, count int) (mss MemberAndScores, err error) ZRange(key string, start float64, stop float64) (members []BulkString, err error) ZRangeWithScores(key string, start float64, stop float64) (mss MemberAndScores, err error) ZRangeByLex(key string, min MemberRange, max MemberRange, options ...RangeOption) (members []BulkString, err error) ZRangeByScore(key string, min ScoreRange, max ScoreRange, options ...RangeOption) (members []BulkString, err error) ZRangeByScoreWithScores(key string, min ScoreRange, max ScoreRange, options ...RangeOption) (mss MemberAndScores, err error) ZRank(key string, member string) (rank int, exists bool, err error) ZRem(key string, members ...string) (removed int, err error) ZRemRangeByLex(key string, min MemberRange, max MemberRange) (removed int, err error) ZRemRangeByRank(key string, start int, stop int) (removed int, err error) ZRemRangeByScore(key string, min ScoreRange, max ScoreRange) (removed int, err error) ZRevRange(key string, start float64, stop float64) (members []BulkString, err error) ZRevRangeWithScores(key string, start float64, stop float64) (mss MemberAndScores, err error) ZRevRangeByLex(key string, min MemberRange, max MemberRange, options ...RangeOption) (members []BulkString, err error) ZRevRangeByScore(key string, min ScoreRange, max ScoreRange, options ...RangeOption) (members []BulkString, err error) ZRevRangeByScoreWithScores(key string, min ScoreRange, max ScoreRange, options ...RangeOption) (mss MemberAndScores, err error) ZRevRank(key string, member string) (rank int, exists bool, err error) ZScore(key string, member string) (score float64, exists bool, err error) ZUnionStore(dst string, keys []string, options ...StoreOption) (count int, err error) }
SortedSets 代表 Redis 跟 zset 相关的接口,详见 https://redis.io/commands#sorted_set。
type StoreOption ¶
type StoreOption struct {
// contains filtered or unexported fields
}
StoreOption 代表 sorted set 对计算结果进行存储时的选项。
func AggregateMax ¶
func AggregateMax() StoreOption
AggregateMax 返回一个用于 sorted set 计算结果存储的选项 AGGREGATE MAX。 详见 https://redis.io/commands/zunionstore。
func AggregateMin ¶
func AggregateMin() StoreOption
AggregateMin 返回一个用于 sorted set 计算结果存储的选项 AGGREGATE MIN。 详见 https://redis.io/commands/zunionstore。
func AggregateSum ¶
func AggregateSum() StoreOption
AggregateSum 返回一个用于 sorted set 计算结果存储的选项 AGGREGATE SUM。 详见 https://redis.io/commands/zunionstore。
func Weights ¶
func Weights(weights ...float64) StoreOption
Weights 返回一个用于 sorted set 计算结果存储的选项 WEIGHTS。 详见 https://redis.io/commands/zunionstore。
type Streams ¶
type Streams interface { }
Streams 代表 Redis 跟 stream 相关的接口,详见 https://redis.io/commands#stream。
type Strings ¶
type Strings interface { Append(key string, value string) (l int, err error) Decr(key string) (value int64, err error) DecrBy(key string, decr int64) (value int64, err error) Get(key string) (value BulkString, err error) GetRange(key string, start int, end int) (value BulkString, err error) GetSet(key string, value string) (old BulkString, err error) Incr(key string) (value int64, err error) IncrBy(key string, incr int64) (value int64, err error) IncrByFloat(key string, incr float64) (value float64, err error) MGet(keys ...string) (values []BulkString, err error) MSet(kvs ...KeyAndValue) (err error) MSetNX(kvs ...KeyAndValue) (isSet bool, err error) Set(key string, value string, options ...SetOption) (isSet bool, err error) SetEx(key string, timeout time.Duration, value string) (err error) SetNX(key string, value string) (isSet bool, err error) SetRange(key string, offset int, value string) (modified int, err error) StrLen(key string) (l int, err error) }
Strings 代表 Redis 跟字符串相关的接口,详见 https://redis.io/commands#string。
type Transactions ¶
type Transactions interface { }
Transactions 代表 Redis 跟事务相关的接口,详见 https://redis.io/commands#transactions。
Source Files ¶
- bulkstring.go
- chanandsubs.go
- cluster.go
- config.go
- connection.go
- factory.go
- generic.go
- geo.go
- hashes.go
- hyperloglog.go
- keyandvalues.go
- lists.go
- memberandscores.go
- options.go
- pubsub.go
- ranges.go
- redis.go
- scan.go
- scripting.go
- server.go
- sets.go
- sortedsets.go
- stats.go
- streams.go
- strings.go
- transactions.go
- value.go