时间:2020-08-20来源:www.pcxitongcheng.com作者:电脑系统城
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)
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类型
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) // 解码
2023-11-01
React中immutable的使用2023-11-01
命令行清除Redis缓存的实现2023-11-01
Redis缓存空间优化实践详解引言大厂很多项目都是部署到多台服务器上,这些服务器在各个地区都存在,当我们访问服务时虽然执行的是同一个服务,但是可能是不同服务器运行的;在我学习项目时遇到这样一个登录情...
2023-11-01
1.多次修改一个redis的String过期键,如何保证他仍然能保留第一次设置时的删除时间 2.修改hash、set、Zset、list的值,会使过期时间重置吗?...
2023-11-01