Golang中针对redis的操作已经十分成熟,官方推荐的主流使用有两个,分别是:
1、redigo 官方文档:https://godoc.org/github.com/garyburd/redigo/redis
2、go-redis 官方文档:https://godoc.org/github.com/go-redis/redis
本文就以最主流的redigo进行介绍操作redis服务。
1、Windows安装redis图形界面管理(非必需)
官网下载:https://redisdesktop.com/
2、操作步骤
值得称赞的一点是,golang对redis的操作近乎类似于直接操作命令行的赶脚,下面就来体验一下。这里不对redis数据库的详情内容进行展开,如有需要,我会在后续的文章当中进行专门讲解。
(1)下载依赖
go get github.com/garyburd/redigo/redis
使用开发工具的朋友,可以通过工具进行下载(无须vpn)。
(2)创建连接
conn, err := redis.Dial("tcp", "127.0.0.1:6379", redis.DialDatabase(1),//dialOption参数可以配置选择数据库、连接密码、心跳检测等等 redis.DialPassword("xxxx")) if err != nil { fmt.Println("Connect to redis failed ,cause by >>>", err) return } defer conn.Close()
(3)插入值
//写入值{"test-Key":"test-Value"} _, err = conn.Do("SET", "test-Key", "test-Value") if err != nil { fmt.Println("redis set value failed >>>", err) }
(4)检验key值是否存在
//检查是否存在key值 exists, err := redis.Bool(conn.Do("EXISTS", "test-Key")) if err != nil { fmt.Println("illegal exception") } fmt.Printf("exists or not: %v \n", exists)
(5)获取值
//read value v, err := redis.String(conn.Do("GET", "test-Key")) if err != nil { fmt.Println("redis get value failed >>>", err) } fmt.Println("get value: ", v)
(6)给定一个kv的过期时间
//EX,5秒 _, err = conn.Do("SET", "test-Key", "test-Value", "EX", "5") if err != nil { fmt.Println("redis set value failed >>>", err) }
(7)删除key
//del kv _, err = conn.Do("DEL", "test-Key") if err != nil { fmt.Println("redis delelte value failed >>>", err) }
希望更多操作的朋友,其实只要对redis的命令行操作掌握熟练,就可以轻松对golang的redigo进行轻松使用了。另外还支持flush、send等方法进行其它操作。
完整代码如下:
package main import ( "github.com/garyburd/redigo/redis" "fmt" "time" ) func main() { conn, err := redis.Dial("tcp", "127.0.0.1:6379", redis.DialDatabase(1), //DialOption参数可以配置选择数据库、连接密码等 redis.DialPassword("password")) if err != nil { fmt.Println("Connect to redis failed ,cause by >>>", err) return } defer conn.Close() //如果db有密码,可以设置 //if _,err := conn.Do("AUTH","password");err !=nil{ // fmt.Println("connect db by pwd failed >>>",err) //} //写入值{"test-Key":"test-Value"} _, err = conn.Do("SET", "test-Key", "test-Value", "EX", "5") if err != nil { fmt.Println("redis set value failed >>>", err) } time.Sleep(10 * time.Second) //检查是否存在key值 exists, err := redis.Bool(conn.Do("EXISTS", "test-Key")) if err != nil { fmt.Println("illegal exception") } fmt.Printf("exists or not: %v \n", exists) //read value v, err := redis.String(conn.Do("GET", "test-Key")) if err != nil { fmt.Println("redis get value failed >>>", err) } fmt.Println("get value: ", v) //del kv _, err = conn.Do("DEL", "test-Key") if err != nil { fmt.Println("redis delelte value failed >>>", err) } }
-----------------------------------------
有任何建议或问题,欢迎加微信一起学习交流,欢迎从事IT,热爱IT,喜欢深挖源代码的行业大牛加入,一起探讨。
个人微信号:bboyHan