go语言使用redis

原文作者:laijh

来源:简书

go的redis client用的比较多两个包是redix和redigo,因为beego cache模块里redis使用的是redigo,所以我也就使用这个包了。因为代码内容偏多,结构不清晰,不方便阅读,最后整理成一份思维导图,便于学习。当把整体分析,会发现提供给开发者使用的内容非常巧妙。

点击下载

Demo:

下面内容是更加详细的源码分析

提供给开发者使用的内容

(1)变量

(2)常量

(3)新类型

(4)接口

(5)结构体

(6)函数

1、变量

var ErrNil = errors.New("redigo: nil returned")

2、常量

3、新类型

(1)type Args []interface{}

(2)type Error string

4、接口

(1)Conn

(2)ConnWithTimeout

(3)Scanner

(4)Argument

5、结构体

(1)DialOption

(2)Pool

(3)PoolStats

(4)Subscription

(5)PubSubConn

(6)Message

(7)Script

(8)Pong

6、函数

(1)func NewPool(newFn func() (Conn, error), maxIdle int) *Pool

(2)func NewScript(keyCount int, src string) *Script

(3)func NewLoggingConn(conn Conn, logger *log.Logger, prefix string) Conn

(4)func NewLoggingConnFilter(conn Conn, loggerlog.Logger, prefix string, skip func(cmdName string) bool) Conn

(5)func DoWithTimeout(c Conn, timeout time.Duration, cmd string, args ...interface{}) (interface{}, error)

(6)func DoWithTimeout(c Conn, timeout time.Duration, cmd string, args ...interface{}) (interface{}, error)

(7)func Int(reply interface{}, err error) (int, error)

(8)func Int64(reply interface{}, err error) (int64, error)

(9)func Uint64(reply interface{}, err error) (uint64, error)

(10)func Float64(reply interface{}, err error) (float64, error)

(11)func String(reply interface{}, err error) (string, error)

(12)func Bytes(reply interface{}, err error) ([]byte, error)

(13)func Bool(reply interface{}, err error) (bool, error)

(14)func MultiBulk(reply interface{}, err error) ([]interface{}, error)

(15)func Values(reply interface{}, err error) ([]interface{}, error)

(16)func Float64s(reply interface{}, err error) ([]float64, error)

(17)func Strings(reply interface{}, err error) ([]string, error)

(18)func ByteSlices(reply interface{}, err error) ([][]byte, error)

(19)func Int64s(reply interface{}, err error) ([]int64, error)

(20)func Ints(reply interface{}, err error) ([]int, error)

(21)func StringMap(result interface{}, err error) (map[string]string, error)

(22)func IntMap(result interface{}, err error) (map[string]int, error)

(23)func Int64Map(result interface{}, err error) (map[string]int64, error)

(24)func Positions(result interface{}, err error) ([][2]float64, error)

(25)func DialTimeout(network, address string, connectTimeout, readTimeout, writeTimeout time.Duration) (Conn, error)

(26)func DialReadTimeout(d time.Duration) DialOption

(27)func DialWriteTimeout(d time.Duration) DialOption

(28)func DialConnectTimeout(d time.Duration) DialOption

(29)func DialKeepAlive(d time.Duration) DialOption

(30)func DialNetDial(dial func(network, addr string) (net.Conn, error)) DialOption

(31)func DialDatabase(db int) DialOption

(32)func DialPassword(password string) DialOption

(33)func DialTLSConfig(c *tls.Config) DialOption

(34)func DialTLSSkipVerify(skip bool) DialOption

一、变量

var ErrNil = errors.New("redigo: nil returned")

暴露给开发者的目的是,因为从redis服务器获取数据的时候可能遇到值为空的情况。

二、常量

三、新类型

(1)type Args []interface{}

(2)type Error string

四、接口

(1)Conn

(2)ConnWithTimeout

(3)Scanner

(4)Argument

五、结构体

(1)DialOption

源码:

作用:该结构体是被设计成 当创建与redis服务器连接时,进行参数设置。

与该结构体有关的函数:

(2)Pool

源码:

作用:用来管理redis连接池

相关函数:

(3)PoolStats

源码:

作用:记录redis池中存活连接数量和空闲连接数

(4)Subscription

源码:

作用:Subscription用于订阅或取消订阅通知。

相关函数:

Demo:

(5)PubSubConn

源码:

相关函数:

(6)Message

源码:

(7)Script

源码:

相关函数:

(8)Pong

源码:

(6)函数

经过学习源码发现,这些顶尖的设计者与我们普通开发者的区别在于,他们包设计非常巧妙,以及只把有必要的内容提供给开发者。

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

Golang语言社区

ID:Golangweb

游戏服务器架构丨分布式技术丨大数据丨游戏算法学习

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190105A184DI00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券