redis 开源go插件
go-redis : https://juejin.cn/post/7027347979065360392
redigo : https://github.com/gomodule/redigo
安装依赖包
go get github.com/gomodule/redigo/redis
Go连接Redis
go-redis包自带了连接池,会自动维护redis连接,因此创建一次client即可,不要查询一次redis就关闭client。
import "github.com/gomodule/redigo/redis" // 引入 redis 包
基础功能体验
string
package mainimport ("fmt""github.com/gomodule/redigo/redis" // 引入 redis 包)func main() {// 通过 go 向 redis 读写数据// 1. 连接到 redisconn, err := redis.Dial("tcp", "localhost:6379")if err != nil {fmt.Println("redis连接失败")return}fmt.Println("redis 连接成功")defer conn.Close()// 2. 通过go向redis写入数据_, err = conn.Do("Set", "name", "tom猫猫")if err != nil {fmt.Println("set 出错了")}// 3. 取数据r, err := redis.String(conn.Do("Get", "name"))if err != nil {fmt.Println("get 出错了")return}// 返回的 r 是interface{}, 需要类型断言fmt.Printf("v 类型: %T, 值: %v \n", r, r)}
hash
package mainimport ("fmt""github.com/gomodule/redigo/redis")func main() {// 通过 go 向 redis 读写数据// 1. 连接到 redisconn, err := redis.Dial("tcp", "localhost:6379")if err != nil {fmt.Println("redis连接失败")return}fmt.Println("redis 连接成功")defer conn.Close()// hash 单个读取_, err = conn.Do("Hset", "cat", "name", "tom")if err != nil {fmt.Println("Hset 出错了")}_, err = conn.Do("Hset", "cat", "age", "12")if err != nil {fmt.Println("Hset 出错了")}// 3. 取数据h, err := redis.String(conn.Do("Hget", "cat", "name"))if err != nil {fmt.Println("get 出错了")return}fmt.Printf("hash 类型: %T, 值: %v \n", h, h)h2, err := redis.String(conn.Do("Hget", "cat", "age"))if err != nil {fmt.Println("get 出错了")return}fmt.Printf("hash 类型: %T, 值: %v \n", h2, h2)// hash 一次读写多个_, err = conn.Do("HMSet", "phone1", "name", "apple", "action", "call")if err != nil {fmt.Println("HMSet 出错了", err)return}// redis.Strings 处理多个值h3, err := redis.Strings(conn.Do("HMGet", "phone1", "name", "action"))if err != nil {fmt.Println("HMGet 出错了")return}fmt.Printf("hash 类型: %T, 值: %v \n", h3, h3)for _, v := range h3 {fmt.Println(v)}}
