msgRedis

package
v0.0.0-...-aa68dce Latest Latest
Warning

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

Go to latest
Published: Jun 16, 2020 License: GPL-3.0 Imports: 10 Imported by: 0

Documentation

Overview

redis返回数据 Error: -Error message\r\n

Simple String: +OK\r\n

Integers: :1000\r\n(int64)

Bulk Strings: $6\r\nfoobar\r\n

$0\r\n\r\n
$-1\r\n

Arrays: *2\r\n$3\r\nfoo\r\n$3\r\nbar\r\n

*0\r\n
*-1\r\n

A client sends to the Redis server a RESP Array consisting of just Bulk Strings. A Redis server replies to clients sending any valid RESP data type as reply.

Index

Constants

View Source
const (
	ConnectTimeout    = 10e9
	ReadTimeout       = 60e9
	WriteTimeout      = 60e9
	DefaultBufferSize = 64

	RetryWaitSeconds = time.Second
	RetryTimes       = 2

	TypeError        = '-'
	TypeSimpleString = '+'
	TypeBulkString   = '$'
	TypeIntegers     = ':'
	TypeArrays       = '*'
)
View Source
const (
	DefaultMaxConnNumber     = 100
	DefaultMaxIdleNumber     = 25
	DefaultMaxIdleSeconds    = 28
	DefaultMaxConnsWaitTimes = 50
)

Variables

View Source
var (
	ErrNil           = errors.New("nil data return")
	ErrBadType       = errors.New("invalid return type")
	ErrBadTcpConn    = errors.New("invalid tcp conn")
	ErrBadTerminator = errors.New("invalid terminator")
	ErrResponse      = errors.New("bad call")
	ErrNilPool       = errors.New("conn not belongs to any pool")
	ErrKeyNotExist   = errors.New(CommonErrPrefix + "key not exist")
	ErrBadArgs       = errors.New(CommonErrPrefix + "request args invalid")
	ErrEmptyDB       = errors.New(CommonErrPrefix + "empty db")
	ErrResponseType  = errors.New(CommonErrPrefix + "response type error")

	CommonErrPrefix = "CommonError:"
)

Functions

func Debug

func Debug(info, address string)

func Now

func Now() string

当前时间

func Sum

func Sum(key string) int

哈希算法

Types

type Conn

type Conn struct {
	sync.RWMutex
	Address string
	// contains filtered or unexported fields
}

func Connect

func Connect(addr string, connectTimeout, readTimeout, writeTimeout time.Duration) (*Conn, error)

func Dial

func Dial(address, password string, connectTimeout, readTimeout, writeTimeout time.Duration, keepAlive bool, pool *Pool) (*Conn, error)

connect with timeout

func NewConn

func NewConn(conn *net.TCPConn, connectTimeout, readTimeout, writeTimeout time.Duration, keepAlive bool, pool *Pool, Address string) *Conn

func (*Conn) APPEND

func (c *Conn) APPEND(key, value string) (int64, error)

****************** strings commands ******************

func (*Conn) AUTH

func (c *Conn) AUTH(password string) (bool, error)

****************** connections ******************

func (*Conn) BITCOUNT

func (c *Conn) BITCOUNT(key string) (int64, error)

func (*Conn) BITOP

func (c *Conn) BITOP(op, dest string, keys []string) (int64, error)

2.6.0

func (*Conn) BITPOS

func (c *Conn) BITPOS()

2.8.7 TODO

func (*Conn) BLPOP

func (c *Conn) BLPOP(keys []string, timeout int) ([]interface{}, error)

****************** lists commands ******************

func (*Conn) BRPOP

func (c *Conn) BRPOP(keys []string, timeout int) ([]interface{}, error)

func (*Conn) BRPOPLPUSH

func (c *Conn) BRPOPLPUSH(source, dest string, timeout int) ([]byte, error)

func (*Conn) Call

func (c *Conn) Call(command string, args ...interface{}) (interface{}, error)

call redis command with request => response model

func (*Conn) CallN

func (c *Conn) CallN(retry int, command string, args ...interface{}) (interface{}, error)

func (*Conn) Close

func (c *Conn) Close()

func (*Conn) Copy

func (c *Conn) Copy(conn *Conn)

func (*Conn) DECR

func (c *Conn) DECR(key string) (int64, error)

func (*Conn) DECRBY

func (c *Conn) DECRBY(key string, num int) (int64, error)

func (*Conn) DEL

func (c *Conn) DEL(key string) (int64, error)

****************** keys commands ******************

func (*Conn) DELMulti

func (c *Conn) DELMulti(keys []string) (int64, error)

func (*Conn) DUMP

func (c *Conn) DUMP(key string) ([]byte, error)

func (*Conn) Discard

func (c *Conn) Discard() error

func (*Conn) EVAL

func (c *Conn) EVAL(script string, numkeys int, keys []string, scriptArgs []string) (interface{}, error)

****************** scripting ******************

func (*Conn) EVALSHA

func (c *Conn) EVALSHA(sha1 string, numkeys int, keys []string, scriptArgs []string) (interface{}, error)

func (*Conn) EXISTS

func (c *Conn) EXISTS(key string) (bool, error)

func (*Conn) EXPIRE

func (c *Conn) EXPIRE(key string, seconds int64) (bool, error)

func (*Conn) EXPIREAT

func (c *Conn) EXPIREAT(key string, timestamp int64) (bool, error)

func (*Conn) GET

func (c *Conn) GET(key string) ([]byte, error)

应该返回interface还是[]byte?

func (*Conn) GETBIT

func (c *Conn) GETBIT(key string, pos int) (int64, error)

func (*Conn) GETRANGE

func (c *Conn) GETRANGE(key string, start, end int) ([]byte, error)

func (*Conn) GETSET

func (c *Conn) GETSET(key, value string) ([]byte, error)

func (*Conn) HDEL

func (c *Conn) HDEL(key string, fields []string) (int64, error)

****************** hashes commands ******************

func (*Conn) HEXISTS

func (c *Conn) HEXISTS(key string, field string) (bool, error)

func (*Conn) HGET

func (c *Conn) HGET(key string, field string) ([]byte, error)

func (*Conn) HGETALL

func (c *Conn) HGETALL(key string) ([]interface{}, error)

func (*Conn) HGETALLMAP

func (c *Conn) HGETALLMAP(key string) (map[string]string, error)

返回结果用map组织

func (*Conn) HINCRBY

func (c *Conn) HINCRBY(key string, field string, increment int) (int64, error)

func (*Conn) HINCRBYFLOAT

func (c *Conn) HINCRBYFLOAT(key string, field string, increment float64) ([]byte, error)

func (*Conn) HKEYS

func (c *Conn) HKEYS(key string) ([][]byte, error)

func (*Conn) HLEN

func (c *Conn) HLEN(key string) (int64, error)

func (*Conn) HMGET

func (c *Conn) HMGET(key string, fields []string) ([]interface{}, error)

func (*Conn) HMSET

func (c *Conn) HMSET(key string, kv map[string]interface{}) ([]byte, error)

func (*Conn) HSCAN

func (c *Conn) HSCAN(key string, cursor int, match bool, pattern string, isCount bool, count int) (int, []interface{}, error)

func (*Conn) HSET

func (c *Conn) HSET(key, field string, value interface{}) (int64, error)

func (*Conn) HSETNX

func (c *Conn) HSETNX(key, field string, value interface{}) (int64, error)

func (*Conn) HVALS

func (c *Conn) HVALS(key string) ([]interface{}, error)

func (*Conn) INCR

func (c *Conn) INCR(key string) (int64, error)

func (*Conn) INCRBY

func (c *Conn) INCRBY(key string, num int) (int64, error)

func (*Conn) INCRBYFLOAT

func (c *Conn) INCRBYFLOAT(key string, f float64) ([]byte, error)

func (*Conn) Info

func (c *Conn) Info() ([]byte, error)

func (*Conn) IsAlive

func (c *Conn) IsAlive() bool

func (*Conn) KEYS

func (c *Conn) KEYS(pattern string) ([][]byte, error)

func (*Conn) LINDEX

func (c *Conn) LINDEX(key string, index int) ([]byte, error)

func (*Conn) LINSERT

func (c *Conn) LINSERT(key, dir, pivot, value string) (int64, error)

func (*Conn) LLEN

func (c *Conn) LLEN(key string) (int64, error)

func (*Conn) LPOP

func (c *Conn) LPOP(key string) ([]byte, error)

func (*Conn) LPUSH

func (c *Conn) LPUSH(key string, values []string) (int64, error)

func (*Conn) LPUSHX

func (c *Conn) LPUSHX(key, value string) (int64, error)

func (*Conn) LRANGE

func (c *Conn) LRANGE(key string, start, end int) ([]interface{}, error)

func (*Conn) LREM

func (c *Conn) LREM(key string, count int, value string) (int64, error)

func (*Conn) LSET

func (c *Conn) LSET(key string, index int, value string) ([]byte, error)

func (*Conn) LTRIM

func (c *Conn) LTRIM(key string, start, end int) ([]byte, error)

func (*Conn) MGET

func (c *Conn) MGET(keys []string) ([]interface{}, error)

func (*Conn) MIGRATE

func (c *Conn) MIGRATE(host, port, key, destDB string, timeout int, COPY, REPLACE bool) (bool, error)

since 2.6.0 COPY and REPLACE will be available in 3.0

func (*Conn) MOVE

func (c *Conn) MOVE(key, db string) (bool, error)

func (*Conn) MSET

func (c *Conn) MSET(kv map[string]string) ([]byte, error)

func (*Conn) MSETNX

func (c *Conn) MSETNX(kv map[string]string) (int64, error)

func (*Conn) MULTI

func (c *Conn) MULTI() error

Transactions

func (*Conn) OBJECT

func (c *Conn) OBJECT(subcommand, key string) (interface{}, error)

func (*Conn) PERSIST

func (c *Conn) PERSIST(key string) (bool, error)

func (*Conn) PEXPIRE

func (c *Conn) PEXPIRE(key string, milliseconds int64) (bool, error)

func (*Conn) PEXPIREAT

func (c *Conn) PEXPIREAT(key string, milliTimestamp int64) (bool, error)

func (*Conn) PFADD

func (c *Conn) PFADD(key string, elements []string) (int64, error)

****************** hyperLogLog ****************** since 2.8.9

func (*Conn) PFCOUNT

func (c *Conn) PFCOUNT(keys []string) (int64, error)

func (*Conn) PFMERGE

func (c *Conn) PFMERGE(destKey string, sourceKeys []string) ([]byte, error)

func (*Conn) PSETEX

func (c *Conn) PSETEX(key string, millonseconds int64, value string) ([]byte, error)

func (*Conn) PTTL

func (c *Conn) PTTL(key string) (int64, error)

func (*Conn) PipeExec

func (c *Conn) PipeExec() ([]interface{}, error)

func (*Conn) PipeSend

func (c *Conn) PipeSend(command string, args ...interface{}) error

pipeline与transactions没有用callN,失败没有重试 pipeline

func (*Conn) QUIT

func (c *Conn) QUIT()

func (*Conn) RANDOMKEY

func (c *Conn) RANDOMKEY() ([]byte, error)

func (*Conn) RENAME

func (c *Conn) RENAME(key, newkey string) ([]byte, error)

func (*Conn) RENAMENX

func (c *Conn) RENAMENX(key, newkey string) (bool, error)

func (*Conn) RESTORE

func (c *Conn) RESTORE(key string, ttl int, serializedValue string) (bool, error)

with dump

func (*Conn) RPOP

func (c *Conn) RPOP(key string) ([]byte, error)

func (*Conn) RPOPLPUSH

func (c *Conn) RPOPLPUSH(source, dest string) ([]byte, error)

func (*Conn) RPUSH

func (c *Conn) RPUSH(key string, values []string) (int64, error)

func (*Conn) RPUSHX

func (c *Conn) RPUSHX(key, value string) (int64, error)

func (*Conn) SADD

func (c *Conn) SADD(key string, values []string) (int64, error)

****************** sets commands ******************

func (*Conn) SCAN

func (c *Conn) SCAN(cursor int, match bool, pattern string, isCount bool, count int) (int, []interface{}, error)

func (*Conn) SCARD

func (c *Conn) SCARD(key string) (int64, error)

0说明key不存在

func (*Conn) SCRIPTEXISTS

func (c *Conn) SCRIPTEXISTS(scripts []string) ([]interface{}, error)

func (*Conn) SCRIPTFLUSH

func (c *Conn) SCRIPTFLUSH() ([]byte, error)

func (*Conn) SCRIPTKILL

func (c *Conn) SCRIPTKILL() ([]byte, error)

func (*Conn) SCRIPTLOAD

func (c *Conn) SCRIPTLOAD(script string) ([]byte, error)

func (*Conn) SDIFF

func (c *Conn) SDIFF(keys []string) ([][]byte, error)

func (*Conn) SDIFFSTORE

func (c *Conn) SDIFFSTORE(key string, keys []string) (int64, error)

func (*Conn) SELECT

func (c *Conn) SELECT(index int) ([]byte, error)

func (*Conn) SET

func (c *Conn) SET(key, value string) ([]byte, error)

func (*Conn) SETBIT

func (c *Conn) SETBIT(key string, pos, value int) (int64, error)

func (*Conn) SETEX

func (c *Conn) SETEX(key string, seconds int64, value string) ([]byte, error)

func (*Conn) SETNX

func (c *Conn) SETNX(key, value string) (int64, error)

func (*Conn) SETRANGE

func (c *Conn) SETRANGE(key string, offset int, value string) (int64, error)

func (*Conn) SINTER

func (c *Conn) SINTER(keys []string) ([][]byte, error)

func (*Conn) SINTERSTORE

func (c *Conn) SINTERSTORE(key string, keys []string) (int64, error)

func (*Conn) SISMEMBER

func (c *Conn) SISMEMBER(key, value string) (int64, error)

func (*Conn) SMEMBERS

func (c *Conn) SMEMBERS(key string) ([][]byte, error)

func (*Conn) SMOVE

func (c *Conn) SMOVE(srcKey, desKey, member string) (int64, error)

TODO:return bool

func (*Conn) SORT

func (c *Conn) SORT()

func (*Conn) SPOP

func (c *Conn) SPOP(key string) ([]byte, error)

func (*Conn) SRANDMEMBER

func (c *Conn) SRANDMEMBER(key string, count int) ([][]byte, error)

func (*Conn) SREM

func (c *Conn) SREM(key string, values []string) (int64, error)

func (*Conn) SSCAN

func (c *Conn) SSCAN(key string, cursor int, match bool, pattern string, isCount bool, count int) (int, []interface{}, error)

func (*Conn) STRLEN

func (c *Conn) STRLEN(key string) (int64, error)

func (*Conn) SUNION

func (c *Conn) SUNION(keys []string) ([][]byte, error)

func (*Conn) SUNIONSTORE

func (c *Conn) SUNIONSTORE(key string, keys []string) (int64, error)

func (*Conn) TTL

func (c *Conn) TTL(key string) (int64, error)

func (*Conn) TYPE

func (c *Conn) TYPE(key string) ([]byte, error)

func (*Conn) TransExec

func (c *Conn) TransExec() ([]interface{}, error)

func (*Conn) TransSend

func (c *Conn) TransSend(command string, args ...interface{}) error

func (*Conn) Watch

func (c *Conn) Watch(keys []string) error

func (*Conn) ZADD

func (c *Conn) ZADD(key string, keyScore map[string]interface{}) (int64, error)

func (*Conn) ZADDSpec

func (c *Conn) ZADDSpec(key string, score, value string) (int64, error)

****************** sorted sets commands ******************

func (*Conn) ZCARD

func (c *Conn) ZCARD(key string) (int64, error)

func (*Conn) ZCOUNT

func (c *Conn) ZCOUNT(key string, min, max float64) (int64, error)

func (*Conn) ZINCRBY

func (c *Conn) ZINCRBY(key string, increment interface{}, member string) ([]byte, error)

increment could be int, float ,string

func (*Conn) ZINTERSTORE

func (c *Conn) ZINTERSTORE(destination string, numkeys int, keys []string, weights bool, ws []int, aggregate bool, ag string) (int64, error)

func (*Conn) ZRANGE

func (c *Conn) ZRANGE(key string, start, stop int, withscores bool) ([]interface{}, error)

func (*Conn) ZRANGEBYSCORE

func (c *Conn) ZRANGEBYSCORE(key string, min, max interface{}, withScores, limit bool, offset, count interface{}) ([]interface{}, error)

func (*Conn) ZRANK

func (c *Conn) ZRANK(key, member string) (int64, error)

if key,or member not exists return bulk string nil, else return integer

func (*Conn) ZREM

func (c *Conn) ZREM(key string, members []string) (int64, error)

func (*Conn) ZREMRANGEBYRANK

func (c *Conn) ZREMRANGEBYRANK(key string, min, max interface{}) (int64, error)

func (*Conn) ZREMRANGEBYSCORE

func (c *Conn) ZREMRANGEBYSCORE(key string, min, max interface{}) (int64, error)

func (*Conn) ZREVRANGE

func (c *Conn) ZREVRANGE(key string, start, stop int, withscores bool) ([]interface{}, error)

func (*Conn) ZREVRANGEBYSCORE

func (c *Conn) ZREVRANGEBYSCORE(key string, max, min interface{}, withScores, limit bool, offset, count interface{}) ([]interface{}, error)

func (*Conn) ZREVRANK

func (c *Conn) ZREVRANK(key, member string) (int64, error)

func (*Conn) ZSCAN

func (c *Conn) ZSCAN(key string, cursor int, match bool, pattern string, isCount bool, count int) (int, []interface{}, error)

func (*Conn) ZSCORE

func (c *Conn) ZSCORE(key, member string) ([]byte, error)

func (*Conn) ZUNIONSTORE

func (c *Conn) ZUNIONSTORE(destination string, numkeys int, keys []string, weights bool, ws []int, aggregate bool, ag string) (int64, error)

type MultiPool

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

include multi redis server's connection pool

func NewMultiPool

func NewMultiPool(addresses []string, maxConnNum, maxIdleNum int, maxIdleSeconds int64) *MultiPool

func (*MultiPool) AddPool

func (mp *MultiPool) AddPool(address string) (*Pool, bool)

func (*MultiPool) Call

func (mp *MultiPool) Call(address string) *OnceConn

func (*MultiPool) ClearInfo

func (mp *MultiPool) ClearInfo()

func (*MultiPool) DelPool

func (mp *MultiPool) DelPool(address string)

func (*MultiPool) Info

func (mp *MultiPool) Info() string

func (*MultiPool) PopByAddr

func (mp *MultiPool) PopByAddr(addr string) *Conn

get conn by address directly

func (*MultiPool) PopByKey

func (mp *MultiPool) PopByKey(key string) *Conn

sum(key)/len(pools)

func (*MultiPool) Push

func (mp *MultiPool) Push(c *Conn)

func (*MultiPool) PushByAddr

func (mp *MultiPool) PushByAddr(addr string, c *Conn)

func (*MultiPool) PushByKey

func (mp *MultiPool) PushByKey(key string, c *Conn)

func (*MultiPool) ReplacePool

func (mp *MultiPool) ReplacePool(src, dst string, maxConnNum, maxIdleNum int, maxIdleSeconds int64) bool

type OnceConn

type OnceConn struct {
	*Conn
}

type Pool

type Pool struct {
	Address  string
	Password string

	// 统计信息
	IdleNum         int
	ActiveNum       int
	MaxConnNum      int
	MaxIdleNum      int
	CreateNum       int
	CreateFailedNum int
	WaitTimeoutNum  int
	PingErrNum      int
	CallNetErrNum   int

	MaxIdleSeconds int64

	ClientPool chan *Conn

	CallNum int64

	ScriptMap map[string]string

	CallConsume map[string]int // 命令消耗时长
	// contains filtered or unexported fields
}

connection pool of only one redis server

func NewPool

func NewPool(address, password string, maxConnNum, maxIdleNum int, maxIdleSeconds int64) *Pool

func (*Pool) Actives

func (p *Pool) Actives() int

func (*Pool) AddScriptSha1

func (p *Pool) AddScriptSha1(name, script string)

func (*Pool) ClearInfo

func (p *Pool) ClearInfo()

返回string,根据需要可能会修改返回值类型,如果info包含其他信息

func (*Pool) DelScriptSha1

func (p *Pool) DelScriptSha1(name string)

func (*Pool) GetScriptSha1

func (p *Pool) GetScriptSha1(name string) string

func (*Pool) Idles

func (p *Pool) Idles() int

func (*Pool) Info

func (p *Pool) Info() *PoolInfo

返回string,根据需要可能会修改返回值类型,如果info包含其他信息

func (*Pool) Pop

func (p *Pool) Pop() *Conn

TODO: add timeout

func (*Pool) Push

func (p *Pool) Push(c *Conn)

func (*Pool) QPS

func (p *Pool) QPS() int64

func (*Pool) QPSAvg

func (p *Pool) QPSAvg() int64

type PoolInfo

type PoolInfo struct {
	Address         string
	IdleNum         int
	ActiveNum       int
	CreateNum       int
	TimeoutNum      int
	CreateFailedNum int
	CallNetErrNum   int
	PingErrNum      int
	Qps             int64
}

Jump to

Keyboard shortcuts

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