• Redis Go语言与Redis数据库交互


    安装

    go get github.com/gomodule/redigo/redis
    

    安装完成后,可以自己创建一个 go 文件:test.go

    内容如下:

    package main
    
    import "github.com/gomodule/redigo/redis"
    
    func main(){
        conn, _ := redis.Dial("tcp", ":6379")
        defer conn.Close()
        conn.Do("set", "c1", "hello")
    }
    

    然后编译运行该文件,之后如果在 redis 中查找到键 “c1” 的值为 “hello”,说明安装成功。

    操作方法

    Go 操作 Redis 文档:https://godoc.org/github.com/gomodule/redigo/redis

    连接数据库

    Dial(network, address string) (conn, err)
    

    例:

    redis.Dial("tcp", ":6379")
    

    执行数据库操作命令

    	Send(commandName string, args ...interface{} error
        Flush() error
        Receive() (reply interface{}, err error)
    

    Send 函数发出指令, Flush 将连接的输出缓冲区刷新到服务器,Receive 接收服务器返回的数据

    例:

    conn.Send("SET", "foo", "bar")
    conn.Send("GET", "foo")
    conn.Flush()  // 把缓冲区命令发到服务器
    conn.Receive()  // 接收 set 请求返回的数据
    v, err := conn.Receive()  // 接收 get 请求传输的数据
    

    另一种执行数据库操作命令(常用)

    Do(commandName string, args ...interface{}) (reply interface{}, err error)
    

    reply helper functions (回复助手函数)

    Bool,Int,Bytes,map,String,Strings 和 Values 函数将回复转换为特定类型的值。

    为了方便地包含对连接 Do 和 Receive 方法的调用,这些函数采用了类型为 error 的第二个参数。如果错误是非 nil,则辅助函数返回错误。如果错误为 nil,则该函数将回复转换为指定的类型:

    exists, err := redis.Bool(c.Do("EXISTS", "foo"))
    if err != nil {
    	//处理错误代码
    }
    reflect.TypeOf(exists)  //打印exists类型
    

    Scan 函数

    func Scan(src [] interface {},dest ... interface {}) ([] interface {},error)
    

    Scan 函数从 src 复制到 dest 指向的值。

    Dest 参数的值必须是整数,浮点数,布尔值,字符串,[]byte,interface{} 或这些类型的切片。Scan 使用标准的 strconv 包将批量字符串转换为数字和布尔类型。

    例:

    var value1 int
    var value2 string
    reply, err := redis.Values(c.Do("MGET", "key1", "key2"))
    if err != nil {
        //处理错误代码
    }
    if _, err := redis.Scan(reply, &value1, &value2); err != nil {
        // 处理错误代码
    }
    

    与项目结合

    序列化与反序列化

    序列化(字节化)

    var buffer bytes.Buffer  // 容器
    enc := gob.NewEncoder(buffer)  // 编码器
    err := enc.Encode(dest)  // 编码
    

    反序列化(反字节化)

    dec := gob.NewDecoder(bytes.NewReader(buffer.bytes()))  // 解码器
    dec.Decode(src)  // 解码
    

    李培冠博客

    欢迎访问我的个人网站:

    李培冠博客:lpgit.com

  • 相关阅读:
    Palindrome Linked List 解答
    Word Break II 解答
    Array vs Linked List
    Reverse Linked List II 解答
    Calculate Number Of Islands And Lakes 解答
    Sqrt(x) 解答
    Find Median from Data Stream 解答
    Majority Element II 解答
    Binary Search Tree DFS Template
    188. Best Time to Buy and Sell Stock IV
  • 原文地址:https://www.cnblogs.com/lpgit/p/13518162.html
Copyright © 2020-2023  润新知