赞
踩
在很多的教程里,例如菜鸟教程,都列举了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 }
我的结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。