在很多的教程里,例如菜鸟教程,都列举了java,PHP操作redis的教程,没有go的,但是还是有很多大佬把自己的经验分享了,就很nice,我也来说说我的感悟以及见解,我的代码就是跟着大佬敲得,有部分细节分享,其实都差不多
大佬地址:https://blog.csdn.net/lena7/article/details/120828397
go get -u github.com/go-redis/redis
go get -u github.com/garyburd/redigo/redis
这两种都可以,一般引用第一个,go get不用多说了吧
这个上一篇说过,这次把截图附上
monitor命令是监听的意思,可以帮我们看看go操作redis的记录,便于我们理解
import (
"fmt"
"github.com/go-redis/redis"
)
func ConnRedis() {
rd := redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379", // url
Password: "123456",
DB:0, // 0号数据库
})
result, err := rd.Ping().Result()
if err != nil {
fmt.Println("ping err :",err)
return
}
fmt.Println(result)
}
123456是我自己的密码,大家改成自己的就行
结果如下
提醒一下,如果运行不了,报出runtime.main_main·f: function main is undeclared in the main package
,你把ConnRedis() 改为main()就行了,我这里便于后面区分
主要就是set以及get操作,大佬原文写的很详细,我就不唠嗑了
var rd *redis.Client= redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379", // url
Password: "123456",
DB:0, // 数据库
})
// string操作
func SetAndGet() {
// set操作:第三个参数是过期时间,如果是0表示不会过期。
err := rd.Set("k1", "v1",0).Err()
if err != nil {
fmt.Println("set err :",err)
return
}
// get操作
val,err := rd.Get("k1").Result()
if err != nil {
fmt.Println("get err :",err)
return
}
fmt.Println("k1 ==",val) // k1 == v1
rd.Close() // 记得关闭连接
}
package go_redis
import (
"fmt"
"github.com/go-redis/redis"
)
// 连接
func ConnRedis2() {
rd := redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379", // url
Password: "123456",
DB: 0, // 数据库
})
result, err := rd.Ping().Result()
if err != nil {
fmt.Println("ping err :", err)
return
}
fmt.Println(result)
}
// 全局变量:连接数据库
var rd *redis.Client = redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379", // url
Password: "123456",
DB: 0, // 数据库
})
// string操作
func SetAndGet() {
// set操作:第三个参数是过期时间,如果是0表示不会过期。
err := rd.Set("k1", "v1", 0).Err()
if err != nil {
fmt.Println("set err :", err)
return
}
// get操作
val, err := rd.Get("k1").Result()
if err != nil {
fmt.Println("get err :", err)
return
}
fmt.Println("k1 ==", val) // k1 == v1
// get获取一个不存在的key,err会返回redis.Nil,因此要注意判断err
val2, err := rd.Get("k2").Result()
if err == redis.Nil {
fmt.Println("k2 does not exist") // k2 does not exist
} else if err != nil {
panic(err)
} else {
fmt.Println("k2", val2)
}
rd.Close()
}
// set操作
func Set() {
defer rd.Close()
// 添加元素
rd.SAdd("key", "v1", "v2", "v3")
// 取出全部元素
members := rd.SMembers("key")
for _, value := range members.Val() {
fmt.Printf("%s\t", value) // v2 v1 v3
}
fmt.Println()
// 删除某个元素
rd.SRem("key", "v2")
// 判断某个元素是否存在
fmt.Println(rd.SIsMember("key", "v2").Val()) // false
// 获取当前set集合的长度
fmt.Println(rd.SCard("key")) // scard key: 2
}