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服务。
官网下载:https://redisdesktop.com/
值得称赞的一点是,golang对redis的操作近乎类似于直接操作命令行的赶脚,下面就来体验一下。这里不对redis数据库的详情内容进行展开,如有需要,我会在后续的文章当中进行专门讲解。
go get github.com/garyburd/redigo/redis
使用开发工具的朋友,可以通过工具进行下载(无须)。
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()
//写入值{"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)
//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)
//EX,5秒
_, err = conn.Do("SET", "test-Key", "test-Value", "EX", "5")
if err != nil {
fmt.Println("redis set value failed >>>", err)
}
//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