zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    图书管理系统登录界面
    图书管理系统的管理者界面
    图书管理系统-servlet层
    图书管理系统的dao层
    Linux 内核优化
    第十一章 Nginx之服务代理
    第十章 Nginx之LNMP拆分
    第九章 Nginx之LNMP架构
    第八章 Nginx常用模块
    第七章 WEB服务之Nginx
  • 原文地址:https://www.cnblogs.com/lpgit/p/13518162.html
Copyright © 2011-2022 走看看