Help us shape the future of Go! Take the 2026 Go Developer Survey

redisdb

package
v1.7.20 Latest Latest
Warning

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

Go to latest
Published: Jul 15, 2024 License: MIT Imports: 18 Imported by: 1

Documentation

Index

Constants

View Source
const (
	MaxGoroutinePoolSize = 5

	MGetCostMax                 = 60
	MSetCostMax                 = 60
	MDelCostMax                 = 60
	RedisClusterCommonCostMax   = 20
	RedisClusterCmdNormal       = "redis_cluster_cmd_normal"
	RedisClusterCmd             = "redis_cluster_cmd_%v"
	RedisClusterCmdSlowCount    = "redis_cluster_%v_slow_count"
	RedisClusterNormalSlowCount = "redis_cluster_common_slow_count"
)
View Source
const (
	DefaultMaxActive    = 500
	DefaultMaxIdle      = 8
	DefaultIdleTimeout  = 300
	DefaultRetryTimes   = 3
	DefaultConnTimeout  = 400
	DefaultReadTimeout  = 700
	DefaultWriteTimeout = 500

	RedisPoolCommonCostMax   = 20
	RedisPoolCmdNormal       = "redis_pool_cmd_normal"
	RedisPoolCmd             = "redis_pool_cmd_%v"
	RedisPoolCmdSlowCount    = "redis_pool_%v_slow_count"
	RedisPoolNormalSlowCount = "redis_pool_common_slow_count"
)

Variables

View Source
var ErrNil = errors.New("redis: nil returned")

Functions

This section is empty.

Types

type BatchReply

type BatchReply struct {
	Req   *BatchReq
	Reply interface{}
	Err   error
}

type BatchReq

type BatchReq struct {
	Key  string
	Args interface{}
}

type RedisCluster

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

type RedisClusterClient added in v1.6.7

type RedisClusterClient struct {
	RedisConfig   *RedisClusterConf `inject:"redisClusterConfig" canNil:"true"`
	RedisConf     *ini.File         `inject:"redisClusterConf" canNil:"true"`
	RedisConfPath string            `inject:"redisClusterConfPath" canNil:"true"`
	ClusterName   string            `inject:"clusterName" canNil:"true"`
	// contains filtered or unexported fields
}

func (*RedisClusterClient) Close added in v1.6.7

func (r *RedisClusterClient) Close()

func (*RedisClusterClient) Del added in v1.6.7

func (r *RedisClusterClient) Del(key string) (int64, error)

* 1. 若正常, 返回 (num,nil), num为删除的key个数 2. 若异常, 返回 (0,error)

func (*RedisClusterClient) Eval added in v1.6.7

func (r *RedisClusterClient) Eval(script string, keys []string, args []interface{}) (interface{}, error)

func (*RedisClusterClient) EvalSha added in v1.6.7

func (r *RedisClusterClient) EvalSha(scriptSha string, keys []string, args []interface{}) (interface{}, error)

func (*RedisClusterClient) Exist added in v1.6.7

func (r *RedisClusterClient) Exist(key string) (bool, error)

func (*RedisClusterClient) Expire added in v1.6.7

func (r *RedisClusterClient) Expire(key string, expiration time.Duration) (bool, error)

*

  1. 若正常, 返回 (true,nil)
  2. 若异常, 返回 (false,error) key不存在返回(false,nil)

func (*RedisClusterClient) Get added in v1.6.7

func (r *RedisClusterClient) Get(key string) (string, error)

* 1. 若key存在且成功, 返回(string,nil) 2. 若key不存在且成功, 返回("",redisCluster.ErrNil) 3. 若异常, 返回("",error)

func (*RedisClusterClient) HGet added in v1.6.7

func (r *RedisClusterClient) HGet(key string, field string) (string, error)

* 1. 异常, 返回 ("",error) 2. 正常, 但key不存在或者field不存在, 返回 ("",redisCluster.ErrNil) 3. 正常, 且key存在, filed存在, 返回 (string, nil)

func (*RedisClusterClient) HGetAll added in v1.6.7

func (r *RedisClusterClient) HGetAll(key string) (map[string]string, error)

* 1. 若异常, 返回 (nil, error) 2. 若正常, 返回 (map[string]string, nil)

func (*RedisClusterClient) HIncrBy added in v1.6.7

func (r *RedisClusterClient) HIncrBy(key string, field string, value int64) (int64, error)

* 1. 若设置成功, 返回(int64,nil) 2. 若异常, 返回(-1,error)

func (*RedisClusterClient) HLen added in v1.6.7

func (r *RedisClusterClient) HLen(key string) (int64, error)

func (*RedisClusterClient) HMDel added in v1.6.7

func (r *RedisClusterClient) HMDel(key string, fields []string) (int64, error)

func (*RedisClusterClient) HMGet added in v1.6.7

func (r *RedisClusterClient) HMGet(key string, fields []string) ([]interface{}, error)

*

  1. 异常, 返回 (nil, error)
  2. 正常, 返回 ([]interface{}, nil), 其中slice里的值顺序与fields一一对应, 对于不存在的field, 对应值为nil 例如: HMGet("key", []string{"field1","field2","field3"}) 返回值: []interface{}{ "value1", //field1的值 nil, //field2不存在 "value3" //field3的值 },nil 备注: 若key不存在, slice里的所有值都为nil

func (*RedisClusterClient) HMSet added in v1.6.7

func (r *RedisClusterClient) HMSet(key string, fields map[string]string) (bool, error)

* 1. 若异常, 返回 (false, error) 2. 若正常, 返回 (true, nil)

func (*RedisClusterClient) HScan added in v1.6.7

func (r *RedisClusterClient) HScan(key string, count int64) (map[string]string, error)

* 1. 若异常, 返回 (nil, error) 2. 若正常, 返回 (map[string]string, nil)

Notice: 这个函数并不能严格的限制返回count个,简单测试看起来主要和redis用的存储结构有关。

Hmap redis在存储的时候如果数据比较少(看文章是512)会使用ziplist,测试了下,在ziplist存储的状态下,会都返回,count不生效
如果数据超过512之后会使用hmap来存储,这时基本就是准确的了。所以这个函数只能保证返回 >= count

func (*RedisClusterClient) HSet added in v1.6.7

func (r *RedisClusterClient) HSet(key string, field string, value string) (int64, error)

* 1. 若异常, 返回 (false, error) 2. 若正常, 返回 (int64, nil)

func (*RedisClusterClient) HSetNx added in v1.6.7

func (r *RedisClusterClient) HSetNx(key string, field string, value string) (bool, error)

* 1. 若异常, 返回 (false, error) 2. 若正常, 返回 (bool, nil), 其中true: field在hash中不存在且新增成功; false: field已在hash中存在, 不做更新.

func (*RedisClusterClient) IncrBy added in v1.6.7

func (r *RedisClusterClient) IncrBy(key string, value int64) (int64, error)

func (*RedisClusterClient) LIndex added in v1.6.7

func (r *RedisClusterClient) LIndex(key string, index int64) (string, error)

func (*RedisClusterClient) LPop added in v1.6.7

func (r *RedisClusterClient) LPop(key string) (string, error)

func (*RedisClusterClient) LPush added in v1.6.7

func (r *RedisClusterClient) LPush(key string, value string) (int64, error)

func (*RedisClusterClient) MDel added in v1.6.7

func (r *RedisClusterClient) MDel(keys []string) (map[string]bool, error)

func (*RedisClusterClient) MDel2 added in v1.6.7

func (r *RedisClusterClient) MDel2(keys []string) (map[string]bool, error)

* 1. err!=nil, 在err!=nil的情况下,若ret为空,则表示都失败了 2. ret标识每个key对应的成功与否,true成功,false失败 有如下情况: ret==nil, err!=nil: 全部失败 ret!=nil, err!=nil: 部分失败, ret会包含所有key的操作结果 ret!=nil, err==nil: 全部成功, ret会包含所有key的操作结果

func (*RedisClusterClient) MGet added in v1.6.7

func (r *RedisClusterClient) MGet(keys []string) ([]interface{}, error)

*

  1. 若有异常, 返回 (nil,error)
  2. 若正常, 返回 ([]interface{}{...},nil), 其中结果里的value顺序与keys的顺序一一对应, 若某个key不存在, 所对应value为nil 例如 MGet([]string{"key1","key2","key3"}), 假设key2不存在, 返回数据如下: []interface{}{ "value1", //key1的值 nil, //不存在 "value3", //key3的值 }, nil

func (*RedisClusterClient) MGet2 added in v1.6.7

func (r *RedisClusterClient) MGet2(keys []string) ([]interface{}, error)

*

  1. 若有异常, 返回 (nil,error)
  2. 若正常, 返回 ([]interface{}{...},nil), 其中结果里的value顺序与keys的顺序一一对应, 若某个key不存在, 所对应value为nil 例如 MGet([]string{"key1","key2","key3"}), 假设key2不存在, 返回数据如下: []interface{}{ "value1", //key1的值 nil, //不存在 "value3", //key3的值 }, nil

func (*RedisClusterClient) MSet added in v1.6.7

func (r *RedisClusterClient) MSet(kvs map[string]string, expire time.Duration) (map[string]bool, error)

func (*RedisClusterClient) MSet2 added in v1.6.7

func (r *RedisClusterClient) MSet2(kvs map[string]string, expire time.Duration) (map[string]bool, error)

* 1. err!=nil, 在err!=nil的情况下,若ret为空,则表示都失败了 2. ret标识每个key对应的成功与否,true成功,false失败 有如下情况: ret==nil, err!=nil: 全部失败 ret!=nil, err!=nil: 部分失败, ret里会包含所有key的操作结果 ret!=nil, err==nil: 全部成功, ret里会包含所有key的操作结果

备注: expire为0表示key不过期

func (*RedisClusterClient) PExpire added in v1.6.7

func (r *RedisClusterClient) PExpire(key string, expiration time.Duration) (bool, error)

*

  1. 若正常, 返回 (true,nil)
  2. 若异常, 返回 (false,error) key不存在返回(false,nil)

func (*RedisClusterClient) PTtl added in v1.6.7

func (r *RedisClusterClient) PTtl(key string) (time.Duration, error)

*

  1. 若正常, 返回 (true,nil)
  2. 若异常, 返回 (false,error) key不存在返回(false,nil)

func (*RedisClusterClient) RPush added in v1.6.7

func (r *RedisClusterClient) RPush(key string, value string) (int64, error)

func (*RedisClusterClient) SAdd added in v1.6.7

func (r *RedisClusterClient) SAdd(key string, members []interface{}) (int64, error)

func (*RedisClusterClient) SPop added in v1.6.7

func (r *RedisClusterClient) SPop(key string) (string, error)

func (*RedisClusterClient) Set added in v1.6.7

func (r *RedisClusterClient) Set(key string, value string, expire time.Duration) (string, error)

* 1. 若expire为0, 表示不设置过期 2. 若设置成功, 返回("ok",nil) 3. 若异常, 返回("",error)

func (*RedisClusterClient) SetBit added in v1.6.7

func (r *RedisClusterClient) SetBit(key string, offset int64, value int) (int64, error)

func (*RedisClusterClient) SetNX added in v1.6.7

func (r *RedisClusterClient) SetNX(key string, value string, expire time.Duration) (bool, error)

* 1. 若expire为0, 表示不设置过期 2. 如果 err 不为空, 则发生异常; 3. 在 err 为空的情况下, bool=false 表示key已存在set无效, bool=true表示key不存在set成功 https://redis.io/commands/setnx

func (*RedisClusterClient) Start added in v1.6.7

func (r *RedisClusterClient) Start() error

func (*RedisClusterClient) ZAdd added in v1.6.7

func (r *RedisClusterClient) ZAdd(key string, members []*redis.Z) (int64, error)

func (*RedisClusterClient) ZRange added in v1.6.7

func (r *RedisClusterClient) ZRange(key string, start, stop int64) ([]string, error)

func (*RedisClusterClient) ZRangeByScoreWithScores added in v1.6.7

func (r *RedisClusterClient) ZRangeByScoreWithScores(key string, min, max string, offset, limit int64) ([]*ZSetResult, error)

func (*RedisClusterClient) ZRem added in v1.6.7

func (r *RedisClusterClient) ZRem(key string, members ...interface{}) (int64, error)

func (*RedisClusterClient) ZRemRangeByRank added in v1.6.7

func (r *RedisClusterClient) ZRemRangeByRank(key string, start, stop int64) (int64, error)

func (*RedisClusterClient) ZRemRangeByScore added in v1.6.7

func (r *RedisClusterClient) ZRemRangeByScore(key string, min, max string) (int64, error)

func (*RedisClusterClient) ZRevRange added in v1.6.7

func (r *RedisClusterClient) ZRevRange(key string, start, stop int64) ([]string, error)

func (*RedisClusterClient) ZRevRangeByScoreWithScores added in v1.6.7

func (r *RedisClusterClient) ZRevRangeByScoreWithScores(key string, min, max string, offset, limit int64) ([]*ZSetResult, error)

type RedisClusterConf

type RedisClusterConf struct {
	//cluster name
	ClusterName string

	//server address
	Addrs []string

	//conn/read/write timeout, 单位: 毫秒, 0表示默认值(1秒), -1表示不超时
	DialTimeout  int64
	ReadTimeout  int64
	WriteTimeout int64

	//pool config
	//每个redis节点会起一个连接池, 该poolSize表示每个redis节点的最大连接数
	PoolSize int
	//从连接池获取可用连接的超时, 单位: 毫秒, 0表示默认值(1秒), -1表示不超时
	PoolTimeout int64
	//最小空闲连接数
	MinIdleConns int
	//空闲连接可被回收的判断阈值, 单位: 秒
	IdleTimeout int64
	//空闲连接检查频率, 单位: 秒, 0表示默认值(30分钟), -1表示不做检查
	IdleCheckFrequency int64

	//当访问的key不在某节点或者某节点有异常, 会做move(redirect)操作, 该参数表示最大move操作次数, 0表示默认值(2次)
	MaxRedirects int

	Password string
}

type RedisClusterCustomError

type RedisClusterCustomError string

func (RedisClusterCustomError) Error

func (e RedisClusterCustomError) Error() string

type RedisConfig

type RedisConfig struct {
	Addrs          []string
	MaxActive      int
	MaxIdle        int
	Retry          int
	IdleTimeoutSec int //空闲连接可被回收的判断阈值, 单位: 秒
	ConnTimeoutMs  int64
	ReadTimeoutMs  int64
	WriteTimeoutMs int64
	Password       string
	DbNumber       int
}

type RedisPool

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

type RedisPoolClient added in v1.6.7

type RedisPoolClient struct {
	RedisConfig   *RedisConfig `inject:"redisConfig" canNil:"true"`
	RedisConf     *ini.File    `inject:"redisConf" canNil:"true"`
	RedisConfPath string       `inject:"redisConfPath" canNil:"true"`
	PoolName      string       `inject:"poolName" canNil:"true"`
	// contains filtered or unexported fields
}

func (*RedisPoolClient) ActiveCount added in v1.6.7

func (p *RedisPoolClient) ActiveCount() int

func (*RedisPoolClient) BatchDo added in v1.6.7

func (p *RedisPoolClient) BatchDo(commandName string, req []*BatchReq) (reply []*BatchReply)

func (*RedisPoolClient) Close added in v1.6.7

func (p *RedisPoolClient) Close()

func (*RedisPoolClient) Del added in v1.6.7

func (p *RedisPoolClient) Del(key string) (err error)

func (*RedisPoolClient) Do added in v1.6.7

func (p *RedisPoolClient) Do(commandName string, args ...interface{}) (reply interface{}, err error)

func (*RedisPoolClient) Exists added in v1.6.7

func (p *RedisPoolClient) Exists(key string) (bool, error)

func (*RedisPoolClient) Expire added in v1.6.7

func (p *RedisPoolClient) Expire(key string, time int) (int, error)

func (*RedisPoolClient) Get added in v1.6.7

func (p *RedisPoolClient) Get(key string) (ret string, errRet error)

* Redis get return string if exist

err = redis.ErrNil if not exist

func (*RedisPoolClient) HDel added in v1.6.7

func (p *RedisPoolClient) HDel(key, field string) (err error)

func (*RedisPoolClient) HGet added in v1.6.7

func (p *RedisPoolClient) HGet(key string, field string) (string, error)

func (*RedisPoolClient) HGetAll added in v1.6.7

func (p *RedisPoolClient) HGetAll(key string) (ret map[string]string, err error)

func (*RedisPoolClient) HIncrBy added in v1.6.7

func (p *RedisPoolClient) HIncrBy(key, field string, val int64) (int64, error)

func (*RedisPoolClient) HLen added in v1.6.7

func (p *RedisPoolClient) HLen(key string) (int64, error)

func (*RedisPoolClient) HMDel added in v1.6.7

func (p *RedisPoolClient) HMDel(key string, values []string) (int64, error)

func (*RedisPoolClient) HMGet added in v1.6.7

func (p *RedisPoolClient) HMGet(key string, values []string) ([]string, error)

func (*RedisPoolClient) HScan added in v1.6.7

func (p *RedisPoolClient) HScan(key string, count int64) (ret map[string]string, err error)

func (*RedisPoolClient) HSet added in v1.6.7

func (p *RedisPoolClient) HSet(key string, field string, value string) (err error)

func (*RedisPoolClient) Incr added in v1.6.7

func (p *RedisPoolClient) Incr(key string) (int, error)

func (*RedisPoolClient) IncrBy added in v1.6.7

func (p *RedisPoolClient) IncrBy(key string, val int64) (int64, error)

func (*RedisPoolClient) LIndex added in v1.6.7

func (p *RedisPoolClient) LIndex(key string, index int64) (string, error)

func (*RedisPoolClient) LPop added in v1.6.7

func (p *RedisPoolClient) LPop(key string) (string, error)

func (*RedisPoolClient) LPush added in v1.6.7

func (p *RedisPoolClient) LPush(key string, val string) (int64, error)

func (*RedisPoolClient) MGet added in v1.6.7

func (p *RedisPoolClient) MGet(keys []string) (ret []interface{}, errRet error)

func (*RedisPoolClient) RPush added in v1.6.7

func (p *RedisPoolClient) RPush(key, val string) (int64, error)

func (*RedisPoolClient) SAdd added in v1.6.7

func (p *RedisPoolClient) SAdd(key string, vals []string) error

func (*RedisPoolClient) SPop added in v1.6.7

func (p *RedisPoolClient) SPop(key string) (string, error)

func (*RedisPoolClient) Set added in v1.6.7

func (p *RedisPoolClient) Set(key, value string) (err error)

func (*RedisPoolClient) SetEx added in v1.6.7

func (p *RedisPoolClient) SetEx(key string, expire int64, value string) (err error)

func (*RedisPoolClient) SetNX added in v1.6.7

func (p *RedisPoolClient) SetNX(key, value string, expire int) (interface{}, error)

func (*RedisPoolClient) Start added in v1.6.7

func (p *RedisPoolClient) Start() error

func (*RedisPoolClient) ZAdd added in v1.6.7

func (p *RedisPoolClient) ZAdd(key string, score int64, val string) error

func (*RedisPoolClient) ZRange added in v1.6.7

func (p *RedisPoolClient) ZRange(key string, start int64, end int64) ([]string, error)

func (*RedisPoolClient) ZRemByScore added in v1.6.7

func (p *RedisPoolClient) ZRemByScore(key string, start string, end string) error

type ZSetResult

type ZSetResult struct {
	Member string
	Score  float64
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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