redis

package module
v1.0.10 Latest Latest
Warning

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

Go to latest
Published: Sep 11, 2020 License: BSD-2-Clause Imports: 13 Imported by: 0

README

go-redis:Redis 客户端

go-redis 封装了 Redis 客户端,并且提供了各种 Redis 命令的 Go 接口。

使用方法

配置 Redis

如果使用 go-runner 启动服务,go-redis 会被自动创建,无需操心。所有配置放在配置文件的相关条目下。

注意,Redis 有多种启动模式,我们应该选用其中一种来填写配置:

  • [redis.client]:代表普通直连模式,只在自测阶段应该设置,用于直连一台独立的 Redis 服务。
  • [redis.cluster]:使用 Redis cluster,线上会使用 cluster 模式管理 Redis 集群。

[redis.client] 为例,配置内容如下:

[redis.client]
addr = "127.0.0.1:6379"

业务代码需要使用 Redis 时,直接使用 New 方法即可。

import "github.com/altstory/go-redis"

func Foo(ctx context.Context, req *FooRequest) (res *FooResponse, err error) {
    // 这里省略各种参数检查……

    r := redis.New(ctx)
    v, err := r.Get("foo")

    if err != nil {
        // Redis 出错啦,记得写日志并报错。
        return
    }

    // 没取到 foo 的值,进行处理
    if v.IsNull() {
        // 处理……
    } else {
        // 拿到了 v 的值,通过 v.String() 得到里面的字符串内容。
    }

    // 其他代码省略……
}
在服务中使用多个 MySQL 连接

在某些场景下,仅使用一个 Redis 并不足够,那么我们可以自行构建 Factory 来连接更多的 Redis 服务。

首先在配置文件中写一个新的 Redis 连接配置。

[redis_another.client]
addr = "127.0.0.1:6380"

然后实例化一个新的工厂。

// anotherRedisFactory 的类型是 **Factory,是一个指针的指针。
var anotherRedisFactory = redis.Register("redis_another")

接着,使用这个全局变量 anotherRedisFactory 来创建新的 Redis client,在业务中使用。

factory := *anotherRedisFactory
r := factory.New(ctx)

// 使用 redis client 进行各种操作……

Documentation

Index

Constants

View Source
const (
	// DefaultDialTimeout 代表默认的连接超时。
	DefaultDialTimeout = 5 * time.Second

	// DefaultReadTimeout 代表默认的读超时。
	DefaultReadTimeout = 3 * time.Second

	// DefaultWriteTimeout 代表默认的写超时。
	DefaultWriteTimeout = 3 * time.Second
)

Variables

View Source
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 Null

func Null() BulkString

Null 返回一个 Null 值的 BulkString。

func (BulkString) IsNull

func (bs BulkString) IsNull() bool

IsNull 判断 bs 是否为一个 Null 值。

func (BulkString) String

func (bs BulkString) String() string

String 返回 bs 内部的字符串,如果 bs 为空,返回空字符串。

type ChanAndSub

type ChanAndSub struct {
	Chan string
	Sub  int
}

ChanAndSub 代表一对 channel 和 subscriber。

func MakeChanAndSub

func MakeChanAndSub(ch string, sub int) ChanAndSub

MakeChanAndSub 可以方便的创建一个 ChanAndSub 实例。

type ChanAndSubs

type ChanAndSubs []ChanAndSub

ChanAndSubs 代表一系列 channel 和 subscriber 组合。

func (ChanAndSubs) Map

func (css ChanAndSubs) Map() map[string]int

Map 将 kvs 转化成一个 map,方便使用。

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 连接。

func NewFactory

func NewFactory(config *Config) *Factory

NewFactory 创建一个新的 Redis 连接池。

func Register

func Register(section string) **Factory

Register 将配置文件里 [section] 部分的配置用于初始化 Redis。 需要注意,Register 函数依赖于 runner 的启动流程, 在 AddClient 周期结束前,返回的 Factory 并不可用。

func (*Factory) Close

func (f *Factory) Close() error

Close 关闭连接池。

func (*Factory) Conn

func (f *Factory) Conn(ctx context.Context) error

Conn 连接 Redis 服务器并测试其可用性。

func (*Factory) New

func (f *Factory) New(ctx context.Context) Redis

New 返回连接池中的一个连接。

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 FlushOption

type FlushOption int

FlushOption 代表 FLUSHDB 和 FLUSHALL 的选项。

func Async

func Async() FlushOption

Async 代表用异步模式进行 flush。

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) Error

func (fmv *FutureMultiValue) Error() string

Error 返回错误信息。

func (*FutureMultiValue) MultiValue

func (fmv *FutureMultiValue) MultiValue() MultiValue

MultiValue 返回内部的 MultiValue 值,如果值为空, 会返回一个 IsNil 为 true 的 MultiValue。

type GEO

type GEO interface {
}

GEO 代表 Redis 跟 GEO 相关的接口,详见 https://redis.io/commands#geo

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

type KeyAndValue struct {
	Key   string
	Value string
}

KeyAndValue 代表一对 K/V 组合。

func MakeKeyAndValue

func MakeKeyAndValue(key string, value string) KeyAndValue

MakeKeyAndValue 可以方便的创建一个 KeyAndValue 实例。

type KeyAndValues

type KeyAndValues []KeyAndValue

KeyAndValues 代表一系列 K/V 组合。

func (KeyAndValues) Map

func (kvs KeyAndValues) Map() map[string]string

Map 将 kvs 转化成一个 map,方便使用。

type KeyType

type KeyType string

KeyType 代表 Redis key 所对应的类型。

const (
	TypeString KeyType = "string"
	TypeList   KeyType = "list"
	TypeSet    KeyType = "set"
	TypeZSet   KeyType = "zset"
	TypeHash   KeyType = "hash"
	TypeStream KeyType = "stream"
)

所有 Redis key 类型。

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

type MemberAndScore struct {
	Member string
	Score  float64
}

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 必须由 +、-、[ 或 ( 开头。

func (MemberRange) String

func (mr MemberRange) String() string

String 返回 mr 的字符串值。

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) IsNil

func (mv MultiValue) IsNil() bool

IsNil 判断值是否为 nil。

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。

func (MultiValue) String

func (mv MultiValue) String() string

String 返回 mv 的字符串表示,用于输出日志。

func (MultiValue) Time

func (mv MultiValue) Time() (t time.Time, ok bool)

Time 返回一个 time.Time,如果 MultiValue 存储的类型不是 time.Time,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 对计算结果进行范围查询时的选项。

func Limit

func Limit(offset int, count int) RangeOption

Limit 返回一个用于 sorted set 范围查询的 limit。

func (*RangeOption) Args

func (ro *RangeOption) Args() []interface{}

Args 返回用于拼接 Redis 命令的参数。

type Redis

Redis 代表一个 Redis 连接。

func New

func New(ctx context.Context) Redis

New 通过默认的连接池创建一个 Redis 连接。

type Scan

type Scan interface {
}

Scan 代表所有跟扫描键值相关的接口,详见 https://redis.io/commands/scan

type ScanOption

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

ScanOption 代表一个扫描选项。

func Count

func Count(count int) ScanOption

Count 返回一个扫描选项,用于在各种 Scan 中实现 COUNT count。

func Match

func Match(pattern string) ScanOption

Match 返回一个扫描选项,用于在各种 Scan 中实现 MATCH pattern。

func (*ScanOption) Args

func (so *ScanOption) Args() []interface{}

Args 返回用于拼接 Redis 命令的参数。

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 的值。

func (ScoreRange) IsValid

func (sr ScoreRange) IsValid() bool

IsValid 判断 sr 是否合法。

func (ScoreRange) String

func (sr ScoreRange) String() string

String 返回 sr 的原值。

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

func Expire(timeout time.Duration) SetOption

Expire 返回一个用于设置 key 超时的选项。 详见 https://redis.io/commands/set

func NX

func NX() SetOption

NX 返回一个用于设置仅当 key 不存在才改变其值的选项。 详见 https://redis.io/commands/set

func XX

func XX() SetOption

XX 返回一个用于设置仅当 key 存在才改变其值的选项。 详见 https://redis.io/commands/set

func (*SetOption) Args

func (so *SetOption) Args() []interface{}

Args 返回用于拼接 Redis 命令的参数。

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

func (*StoreOption) Args

func (so *StoreOption) Args() []interface{}

Args 返回用于拼接 Redis 命令的参数。

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

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL