开源库redigo
go get github.com/garyburd/redigo/redis
连接redis
redis.Dial("tcp","127.0.0.1:6379")
简单读写操作(写入的值不会过期
SET key
GET key
EXISTS key
DEL key [key …]
c.Do("SET", "mykey", "superWang")
redis.String(c.Do("GET", "mykey"))
设置过期
c.Do("SET", "mykey", "superWang", "EX", "5")
检测值 是否存在
redis.Bool(c.Do("EXISTS", "mykey1"))
从 json 到 redis
key := "profile"
imap := map[string]string{"username": "666", "phonenumber": "888"}
value, _ := json.Marshal(imap)
n, err := c.Do("SETNX", key, value)
if err != nil {
fmt.Println(err)
}
if n == int64(1) {
fmt.Println("success")
}
var imapGet map[string]string
valueGet, err := redis.Bytes(c.Do("GET", key))
if err != nil {
fmt.Println(err)
}
errShal := json.Unmarshal(valueGet, &imapGet)
if errShal != nil {
fmt.Println(err)
}
fmt.Println(imapGet["username"])
fmt.Println(imapGet["phonenumber"])
设置过期时间
EXPIRE key seconds
管道服务:
客户端可以发送多个命令到服务器而无需等待响应,最后在一次读取多个响应。
Send向连接的输出缓冲中写入命令。Flush将连接的输出缓冲清空并写入服务器端。Recevie按照FIFO顺序依次读取服务器的响应。
c, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println("connect to redis error ", err)
return
}
defer c.Close()
c.Send("SET", "foo", "bar")
c.Send("GET", "foo")
c.Flush()
c.Receive()
v, err := c.Receive()
fmt.Println(string(v.([]byte)))
参考:https://blog.csdn.net/wangshubo1989/article/details/75050024