-
1.redis安装见本人博文
https://blog.csdn.net/chen_peng7/article/details/70228609
-
2.使用开源库redigo操作redis
github地址:
https://github.com/garyburd/redigo
文档地址:
http://godoc.org/github.com/garyburd/redigo/redis
获取:
go get -u -v github.com/garyburd/redigo/redis
代码示例
package main
import (
"encoding/json"
"fmt"
"time"
"github.com/garyburd/redigo/redis"
)
func main() {
c, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println("Connect to redis error", err)
}
defer c.Close()
//读写
_, err = c.Do("SET", "testkey", "HelloWorld")
if err != nil {
fmt.Println("redis set testkey failed:", err)
}
text, err := redis.String(c.Do("GET", "testkey"))
if err != nil {
fmt.Println("redis get testkey failed:", err)
} else {
fmt.Printf("redis get testkey success:%v\n", text)
}
//设置过期时间
_, err = c.Do("SET", "expirekey", "expirevalue", "EX", "3")
if err != nil {
fmt.Println("redis set expirekey failed:", err)
}
expirevalue, err := redis.String(c.Do("GET", "expirekey"))
if err != nil {
fmt.Println("redis get expirekey failed:", err)
} else {
fmt.Printf("get expirekey:%v\n", expirevalue)
}
time.Sleep(5 * time.Second)
expirevalue, err = redis.String(c.Do("GET", "expirekey"))
if err != nil {
fmt.Println("redis get expirekey failed:", err)
} else {
fmt.Printf("get expirekey:%v\n", expirevalue)
}
//检查是否存在并删除
is_key_exit, err := redis.Bool(c.Do("EXISTS", "testkey"))
if err != nil {
fmt.Println("error:", err)
} else {
fmt.Printf("exists or not: %v \n", is_key_exit)
}
_, err = c.Do("DEL", "testkey")
is_key_exit, err = redis.Bool(c.Do("EXISTS", "testkey"))
if err != nil {
fmt.Println("error:", err)
} else {
fmt.Printf("exists or not: %v \n", is_key_exit)
}
//读写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"])
}
输出:
-
3.开源库go-redis/redis
github地址:
https://github.com/go-redis/redis
文档地址:
https://godoc.org/github.com/go-redis/redis
获取:
go get -u github.com/go-redis/redis
代码:
package main
import (
"fmt"
"github.com/go-redis/redis"
)
func main() {
client := redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
Password: "", // no password set
DB: 0, // use default DB
})
pong, err := client.Ping().Result()
fmt.Println(pong, err)
err = client.Set("key", "value", 0).Err()
if err != nil {
panic(err)
}
val, err := client.Get("key").Result()
if err != nil {
panic(err)
}
fmt.Println("key", val)
val2, err := client.Get("key2").Result()
if err == redis.Nil {
fmt.Println("key2 does not exists")
} else if err != nil {
panic(err)
} else {
fmt.Println("key2", val2)
}
}
结果:
-
4.redis常用命令参考页面
http://einverne.github.io/post/2017/04/redis-command.html
https://blog.csdn.net/ithomer/article/details/9213185