美文网首页
go-redis库的返回值

go-redis库的返回值

作者: golang推广大使 | 来源:发表于2019-06-08 13:44 被阅读0次

github.com/go-redis/redis 是go语言中封装的最便利使用的redis客户端,但是它的使用会给入门者一点小小的疑惑。具体看下面的例子

package main

import (
    "fmt"

    "github.com/go-redis/redis"
)

func main() {
    cli := redis.NewClient(&redis.Options{
        Addr: "127.0.0.1:6379",
    })
    res, err := cli.Ping().Result()  //为什么要用result呢
    fmt.Println(res, err)
}

上面例子中cli.Ping()的执行不能直接得到结果,必须通过Result()函数来获取。
cli.Ping()函数实质上返回了一个*redis.StatusCmd指针,这个类型有以下几个方法:

  • Name()
  • Args()
  • Err()
  • String()
  • Val()
  • Result()
    在上面的例子中我们采用Result方法来获取返回的结果。虽然Val()方法也能取得结果,但是它无法捕获错误,故而不为大家所采用。
    当然这个库中执行其他命令返回的结果未必都有这些方法,另外即使方法名一样,返回的类型也不一样。
    在上面的代码中加入下面几行
    log.Printf("ping args %#v\n", cli.Ping().Args())
    log.Printf("ping string %#v\n", cli.Ping().String())
    log.Printf("ping err %#v\n", cli.Ping().Err())
    log.Printf("ping name %#v\n", cli.Ping().Name())
    log.Printf("ping val %#v\n", cli.Ping().Val())

    res, err := cli.Ping().Result()
    log.Printf("ping result ===%#v,%#v\n", res, err)
    res, err = cli.Set("key", "vel", time.Second).Result()
    log.Printf("set result ===%#v,%#v\n", res, err)
    res, err = cli.Set("keyi", 10, time.Second).Result()
    log.Printf("set result  ===%#v,%#v\n", res, err)
    res = cli.Incr("ikey").String()
    log.Printf("incr string ===%#v,%#v\n", res, err)
    resI, err := cli.Incr("ikey").Result()
    log.Printf("incr  result===%#v,%#v\n", resI, err)
    cmd := cli.Incr("ikey")
    i, err := cmd.Result()
    log.Printf("incr  result===%#v,%#v\n", i, err)
    log.Printf("inc err==%#v", cmd.Err())
    log.Printf("inc val==%#v", cmd.Val())
    log.Printf("inc string==%#v", cmd.String())
    log.Printf("inc args==%#v", cmd.Args())
    setcmd := cli.Set("test", 1, time.Second)
    res, err = setcmd.Result()
    log.Printf("incr  result===%#v,%#v\n", res, err)
    log.Printf("inc err==%#v", setcmd.Err())
    log.Printf("inc val==%#v", setcmd.Val())
    log.Printf("inc string==%#v", setcmd.String())
    log.Printf("inc args==%#v", setcmd.Args())

然后执行一下,可以得到下面的结果:

2019/06/08 ping args []interface {}{"ping"}
2019/06/08 ping string "ping: PONG"
2019/06/08 ping err <nil>
2019/06/08 ping name "ping"
2019/06/08 ping val "PONG"
2019/06/08 ping result ==="PONG",<nil>
2019/06/08 set result ==="OK",<nil>
2019/06/08 set result  ==="OK",<nil>
2019/06/08 incr string ==="incr ikey: 18",<nil>
2019/06/08 incr  result===19,<nil>
2019/06/08 incr  result===20,<nil>
2019/06/08 inc err==<nil>
2019/06/08 inc val==20
2019/06/08 inc string=="incr ikey: 20"
2019/06/08 inc args==[]interface {}{"incr", "ikey"}
2019/06/08 incr  result==="OK",<nil>
2019/06/08 inc err==<nil>
2019/06/08 inc val=="OK"
2019/06/08 inc string=="set test 1 ex 1: OK"
2019/06/08 inc args==[]interface {}{"set", "test", 1, "ex", 1}

相关文章

  • go-redis库的返回值

    github.com/go-redis/redis 是go语言中封装的最便利使用的redis客户端,但是它的使用会...

  • golang操作redis

    项目依赖地址go-redis https://github.com/go-redis/redis[https://...

  • 22.Redis

    在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。《Redis 实战》 R...

  • Go语言操作Redis

    Go语言操作Redis 在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。...

  • go-redis 源码分析:连接池

    笔者最近在项目中基于 go-redis 实现 Redis 缓存优化性能。go-redis 是一个 Go 语言实现的...

  • go操作redis cluster集群

    github.com/go-redis/redis 非常友好的SDK

  • golang 操作redis

    golang操作redis一般有两种库,一个是go-redis,一个是redigo,在这里我们主要介绍go-red...

  • Go-Redis

    Redis支持的数据结构 Redis支持诸如字符串(strings)、哈希(hashes)、列表(lists)、集...

  • Go-redis

    Redis 优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s ,单机能够达...

  • redis其他命令2

    DBSIZE 返回当前数据库的 key 的数量。 返回值当前数据库的 key 的数量。 例子 FLUSHDB 清空...

网友评论

      本文标题:go-redis库的返回值

      本文链接:https://www.haomeiwen.com/subject/lmrixctx.html