• Go-Redis


    redis的client有好多好多,go语言的client在redis官方有两个推荐,radix和redigo。选择哪一个好呢?确实很纠结,后来掷硬币决定选择redigo了。

    redis、go、redigo的安装就不需要提了,不能强行增加篇幅。

    redigo使用起来很人性化,api设计的符合直觉,我对redis了解较少,使用过程中基本没有遇到障碍。

    redigo的使用入门可以去查godoc:http://godoc.org/github.com/garyburd/redigo/redis

    接下来就是毫无技术含量的贴代码了:

    连接redis我一般是这样写的:

    1 c, err := redis.Dial("tcp", "127.0.0.1:6379")
    2 if err != nil {
    3     fmt.Println(err)
    4     return
    5 }
    6 defer c.Close()

    执行命令使用Do函数,跟在redis-cli敲命令的感觉差不多的:

     1 v, err := c.Do("SET", "name", "red")
     2 if err != nil {
     3     fmt.Println(err)
     4     return
     5 }
     6 fmt.Println(v)
     7 v, err = redis.String(c.Do("GET", "name"))
     8 if err != nil {
     9     fmt.Println(err)
    10     return
    11 }
    12 fmt.Println(v)

    列表也是一样:

    1 c.Do("lpush", "redlist", "qqq")
    2 c.Do("lpush", "redlist", "www")
    3 c.Do("lpush", "redlist", "eee")

    读取列表可以for循环遍历,也可以使用redis.Scan函数:

     1 values, _ := redis.Values(c.Do("lrange", "redlist", "0", "100"))
     2 
     3 for _, v := range values {
     4     fmt.Println(string(v.([]byte)))
     5 }
     6 
     7 // 或者
     8 var v1 string
     9 redis.Scan(values, &v1)
    10 fmt.Println(v1)

    管道:

    1 c.Send("SET", "name", "red")
    2 c.Send("GET", "name")
    3 c.Flush()
    4 c.Receive()
    5 c.Receive()

    发布订阅:

     1 func subscribe() {
     2     c, err := redis.Dial("tcp", "127.0.0.1:6379")
     3     if err != nil {
     4         fmt.Println(err)
     5         return
     6     }
     7     defer c.Close()
     8 
     9     psc := redis.PubSubConn{c}
    10     psc.Subscribe("redChatRoom")
    11     for {
    12         switch v := psc.Receive().(type) {
    13         case redis.Message:
    14             fmt.Printf("%s: message: %s
    ", v.Channel, v.Data)
    15         case redis.Subscription:
    16             fmt.Printf("%s: %s %d
    ", v.Channel, v.Kind, v.Count)
    17         case error:
    18             fmt.Println(v)
    19             return
    20         }
    21     }
    22 }
     1 go subscribe()
     2 go subscribe()
     3 go subscribe()
     4 go subscribe()
     5 go subscribe()
     6 
     7 c, err := redis.Dial("tcp", "127.0.0.1:6379")
     8 if err != nil {
     9     fmt.Println(err)
    10     return
    11 }
    12 defer c.Close()
    13 
    14 for {
    15     var s string
    16     fmt.Scanln(&s)
    17     _, err := c.Do("PUBLISH", "redChatRoom", s)
    18     if err != nil {
    19         fmt.Println("pub err: ", err)
    20         return
    21     }
    22 }

    差不多就是这样了,确实也没什么可以解释的。。。

  • 相关阅读:
    sql分页查询
    vi编辑器使用
    Linux命令:
    ubuntu中mysql忘记密码如何修改
    关于MySQL中自增的理解和设置
    MySQL中是索引
    MySQL中的分页操作结合python
    MySQL的分组和排序
    MySQL多表连接操作
    .NET Core App部署Linux
  • 原文地址:https://www.cnblogs.com/simbadan/p/5486946.html
Copyright © 2020-2023  润新知