go使用go-redis操作redis(二)返回类型

本文详细介绍了在Go中使用go-redis库操作Redis时遇到的各种返回类型,包括BoolCmd、BoolSliceCmd、CommandsInfoCmd、DurationCmd、FloatCmd、GeoLocationCmd、IntCmd、IntSliceCmd、ScanCmd、ScanIterator、StatusCmd、StringCmd、StringIntMapCmd、StringSliceCmd、StringStringMapCmd、StringStructMapCmd、TimeCmd和ZSliceCmd。还特别提到了不建议自定义使用BoolCmd,以及提供了一些使用示例。

返回类型:

  1. BoolCmd

    返回bool 值命令, 提供的一些函数:

    func NewBoolCmd(args ...interface{}) *BoolCmd
    func NewBoolResult(val bool, err error) *BoolCmd
    func (cmd *BoolCmd) Args() []interface{}
    func (cmd *BoolCmd) Err() error
    func (cmd *BoolCmd) Name() string
    func (cmd *BoolCmd) Result() (bool, error)
    func (cmd *BoolCmd) String() string   返回字符串结果
    func (cmd *BoolCmd) Val() bool    计算, 返回bool
    

    该类主要配合其他方法使用,当返回BoolCmd值可以使用对应的类方法

    笔者尝试自定义命令, 但验证结果不是预期的结果,因此不建议自定义使用

    例如:

    	GetBool := func(redisdb *redis.Client, key string) *redis.BoolCmd {
    		cmd := redis.NewBoolCmd("get", key)
    		redisdb.Process(cmd)
    		return cmd
    	}
    	SetBool := func(redisdb *redis.Client, key string, value bool) *redis.BoolCmd {
    		cmd := redis.NewBoolCmd("set", key, value)
    		redisdb.Process(cmd)
    		return cmd
    	}
    	SetBool(client, "dobool", true)
    	v2, err := GetBool(client, "dobool").Result()
    	fmt.Println(v2, err)
    

    输出:

    false <nil>
    
  2. BoolSliceCmd

    返回bool的切片结果,是一组结果,一般用于批量命令

  3. CommandsInfoCmd

    返回命令信息, 提供命令信息的查询

    func NewCommandsInfoCmd(args ...interface{}) *CommandsInfoCmd
    func NewCommandsInfoCmdResult(val map[string]*CommandInfo, err error) *CommandsInfoCmd
    func (cmd *CommandsInfoCmd) Args() []interface{}
    func (cmd *CommandsInfoCmd) Err() error
    func (cmd *CommandsInfoCmd) Name() string
    func (cmd *CommandsInfoCmd) Result() (map[string]*CommandInfo, error)
    func (cmd *CommandsInfoCmd) String() string
    func (cmd *CommandsInfoCmd) Val() map[string]*CommandInfo
    

    例如:

    	res3 := client.Command().String()
    	fmt.Println(res3)
    

    输出:

    command: map[hincrby:0xc04204e800 slaveof:0xc04204ef40 getrange:0xc04204f380 
    zremrangebyscore:0xc04204f600 hmset:0xc04204fe00 lastsave:0xc04204fe40 
    lrem:0xc04204ef00 pfcount:0xc04204fd80 hgetall:0xc0420aa300 
    unsubscribe:0xc0420aa980 mget:0xc0420aaac0 punsubscribe:0xc04204fa80 
    latency:0xc04204e2c0 georadiusbymember:0xc04204e980 lpushx:0xc04204ec40 restore-
    asking:0xc04204eec0 expireat:0xc04204f240 sadd:0xc04204f580 select:0xc04204f5c0 
    llen:0xc0420aa540 auth:0xc0420aa600 rpushx:0xc0420aafc0 eval:0xc04204e780 
    hdel:0xc04204eb00 sdiff:0xc04204ee00 geopos:0xc04204f400 flushdb:0xc0420aa480 
    ....
    zrevrank:0xc04204fa00 append:0xc04204fbc0 geodist:0xc0420aa080]
    
    
  4. DurationCmd

    过程命令,返回该时间范围中的命令

    func NewDurationCmd(precision time.Duration, args ...interface{}) *DurationCmd
    func NewDurationResult(val time.Duration, err error) *DurationCmd
    func (cmd *DurationCmd) Args() []interface{}
    func (cmd *DurationCmd) Err() error
    func (cmd *DurationCmd) Name() string
    func (cmd *DurationCmd) Result() (time.Duration, error)
    func (cmd *DurationCmd) String() string
    func (cmd *DurationCmd) Val() time.Duration
    

    例如:

    	GetDuration := func(redisdb *redis.Client, value time.Duration) *redis.DurationCmd {
    		cmd := redis.NewDurationCmd(value)
    		redisdb.Process(cmd)
    		return cmd
    	}
    
    	v2Duration, err := GetDuration(client, 500 * time.Millisecond).Result()
    	fmt.Println(v2Duration, err)
    

    输出:

    0s read tcp 192.168.137.1:50189->192.168.137.18:6379: i/o timeout
    
  5. FloatCmd

    浮点型类型

    func NewFloatCmd(args ...interface{}) *FloatCmd
    func NewFloatResult(val float64, err error) *FloatCmd
    func (cmd *FloatCmd) Args() []interface{}
    func (cmd *FloatCmd) Err() error
    func (cmd *FloatCmd) Name() string
    func (cmd *FloatCmd) Result() (float64, error)
    func (cmd *FloatCmd) String() string
    func (cmd *FloatCmd) Val() float64
    
    
  6. GeoLocationCmd

    位置信息类型

    func NewGeoLocationCmd(q *GeoRadiusQuery, args ...interface{}) *GeoLocationCmd
    func NewGeoLocationCmdResult(val []GeoLocation, err error) *GeoLocationCmd
    func (cmd *GeoLocationCmd) Args() []interface{}
    func (cmd *GeoLocationCmd) Err() error
    func (cmd *GeoLocationCmd) Name() string
    func (cmd *GeoLocationCmd) Result() ([]GeoLocation, error)
    func (cmd *GeoLocationCmd) String() string
    func (cmd *GeoLocationCmd) Val() []GeoLocation
    
  7. IntCmd

    整形

    func NewIntCmd(args ...interface{}) *IntCmd
    func NewIntResult(val int64, err error) *IntCmd
    func (cmd *IntCmd) Args() []interface{}
    func (cmd *IntCmd) Err() error
    func (cmd *IntCmd) Name() string
    func (cmd *IntCmd) Result() (int64, error)
    func (cmd *IntCmd) String() string
    func (cmd *IntCmd) Val() int64
    
  8. IntSliceCmd

    整形切片

    func NewIntSliceCmd(args ...interface{}) *IntSliceCmd
    func (cmd *IntSliceCmd) Args() []interface{}
    func (cmd *IntSliceCmd) Err() error
    func (cmd *IntSliceCmd) Name() string
    func (cmd *IntSliceCmd) Result() ([]int64, error)
    func (cmd *IntSliceCmd) String() string
    func (cmd *IntSliceCmd) Val() []int64
    
  9. ScanCmd

    分页的命令列表

    func NewScanCmd(process func(cmd Cmder) error, args ...interface{}) *ScanCmd
    func NewScanCmdResult(keys []string, cursor uint64, err error) *ScanCmd
    func (cmd *ScanCmd) Args() []interface{}
    func (cmd *ScanCmd) Err() error
    func (cmd *ScanCmd) Iterator() *ScanIterator
    func (cmd *ScanCmd) Name() string
    func (cmd *ScanCmd) Result() (keys []string, cursor uint64, err error)
    func (cmd *ScanCmd) String() string
    func (cmd *ScanCmd) Val() (keys []string, cursor uint64)
    
  10. ScanIterator

    返回一个迭代器

    func (it *ScanIterator) Err() error
    func (it *ScanIterator) Next() bool
    func (it *ScanIterator) Val() string
    
  11. StatusCmd

    命令状态

    func NewStatusCmd(args ...interface{}) *StatusCmd
    func NewStatusResult(val string, err error) *StatusCmd
    func (cmd *StatusCmd) Args() []interface{}
    func (cmd *StatusCmd) Err() error
    func (cmd *StatusCmd) Name() string
    func (cmd *StatusCmd) Result() (string, error)
    func (cmd *StatusCmd) String() string
    func (cmd *StatusCmd) Val() string
    
  12. StringCmd

    字符串

    func NewStringCmd(args ...interface{}) *StringCmd
    func NewStringResult(val string, err error) *StringCmd
    func (cmd *StringCmd) Args() []interface{}
    func (cmd *StringCmd) Bytes() ([]byte, error)
    func (cmd *StringCmd) Err() error
    func (cmd *StringCmd) Float32() (float32, error)
    func (cmd *StringCmd) Float64() (float64, error)
    func (cmd *StringCmd) Int() (int, error)
    func (cmd *StringCmd) Int64() (int64, error)
    func (cmd *StringCmd) Name() string
    func (cmd *StringCmd) Result() (string, error)
    func (cmd *StringCmd) Scan(val interface{}) error
    func (cmd *StringCmd) String() string
    func (cmd *StringCmd) Uint64() (uint64, error)
    func (cmd *StringCmd) Val() string
    
  13. StringIntMapCmd

    string 列表

    func NewStringIntMapCmd(args ...interface{}) *StringIntMapCmd
    func NewStringIntMapCmdResult(val map[string]int64, err error) *StringIntMapCmd
    func (cmd *StringIntMapCmd) Args() []interface{}
    func (cmd *StringIntMapCmd) Err() error
    func (cmd *StringIntMapCmd) Name() string
    func (cmd *StringIntMapCmd) Result() (map[string]int64, error)
    func (cmd *StringIntMapCmd) String() string
    func (cmd *StringIntMapCmd) Val() map[string]int64
    
  14. StringSliceCmd

    string切片

    func NewStringSliceCmd(args ...interface{}) *StringSliceCmd
    func NewStringSliceResult(val []string, err error) *StringSliceCmd
    func (cmd *StringSliceCmd) Args() []interface{}
    func (cmd *StringSliceCmd) Err() error
    func (cmd *StringSliceCmd) Name() string
    func (cmd *StringSliceCmd) Result() ([]string, error)
    func (cmd *StringSliceCmd) ScanSlice(container interface{}) error
    func (cmd *StringSliceCmd) String() string
    func (cmd *StringSliceCmd) Val() []string
    
  15. StringStringMapCmd

    string的二维数组

    func NewStringStringMapCmd(args ...interface{}) *StringStringMapCmd
    func NewStringStringMapResult(val map[string]string, err error) *StringStringMapCmd
    func (cmd *StringStringMapCmd) Args() []interface{}
    func (cmd *StringStringMapCmd) Err() error
    func (cmd *StringStringMapCmd) Name() string
    func (cmd *StringStringMapCmd) Result() (map[string]string, error)
    func (cmd *StringStringMapCmd) String() string
    func (cmd *StringStringMapCmd) Val() map[string]string
    
  16. StringStructMapCmd

    string struct数组

    func NewStringStructMapCmd(args ...interface{}) *StringStructMapCmd
    func (cmd *StringStructMapCmd) Args() []interface{}
    func (cmd *StringStructMapCmd) Err() error
    func (cmd *StringStructMapCmd) Name() string
    func (cmd *StringStructMapCmd) Result() (map[string]struct{}, error)
    func (cmd *StringStructMapCmd) String() string
    func (cmd *StringStructMapCmd) Val() map[string]struct{}
    
  17. TimeCmd

    时间类型, 比如ttl, expire等使用时间的方法的返回值

    func NewTimeCmd(args ...interface{}) *TimeCmd
    func (cmd *TimeCmd) Args() []interface{}
    func (cmd *TimeCmd) Err() error
    func (cmd *TimeCmd) Name() string
    func (cmd *TimeCmd) Result() (time.Time, error)
    func (cmd *TimeCmd) String() string
    func (cmd *TimeCmd) Val() time.Time
    
  18. ZSliceCmd

    集合

    func NewZSliceCmd(args ...interface{}) *ZSliceCmd
    func NewZSliceCmdResult(val []Z, err error) *ZSliceCmd
    func (cmd *ZSliceCmd) Args() []interface{}
    func (cmd *ZSliceCmd) Err() error
    func (cmd *ZSliceCmd) Name() string
    func (cmd *ZSliceCmd) Result() ([]Z, error)
    func (cmd *ZSliceCmd) String() string
    func (cmd *ZSliceCmd) Val() []Z
    
  19. Script

    脚本类

    脚本执行,检查是否存在,加载等

    func NewScript(src string) *Script
    func (s *Script) Eval(c scripter, keys []string, args ...interface{}) *Cmd
    func (s *Script) EvalSha(c scripter, keys []string, args ...interface{}) *Cmd
    func (s *Script) Exists(c scripter) *BoolSliceCmd
    func (s *Script) Hash() string
    func (s *Script) Load(c scripter) *StringCmd
    func (s *Script) Run(c scripter, keys []string, args ...interface{}) *Cmd
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值