• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

RedisGo语言与Redis数据库交互

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

安装

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go语言游戏服务端开发(一)——架构发布时间:2022-07-10
下一篇:
go中的map[Interface{}]Interface{}理解发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap