赞
踩
本文主要介绍操作redis数据库的框架go-redis,因此下面涉及到redis中的命令本文不做详解,下文通过使用go-redis实现go语言代码操作redis,对应命令的作用及说明请看这篇文章,里面介绍了redis各数据类型常用的一些命令。
go-redis是go语言操作redis数据库的框架,从框架中的关于redis操作的方法名可以看出其对应的redis操作。与redigo不同,redigo整体一个Do方法,通过参数决定执行什么redis操作,而go-redis中的方法已经决定了执行何种操作。
下载安装:go get github.com/go-redis/redis
文档地址:https://godoc.org/github.com/go-redis/redis
连接至redis服务端
//连接redis服务端 func goRedisConnect(){ client = redis.NewClient(&redis.Options{ Addr:"127.0.0.1:6379", DB:0, //redis默认有0-15共16个数据库,这里设置操作索引为0的数据库 }) pong,err := client.Ping().Result() if err != nil { log.Fatal(err) } if pong != "PONG" { log.Fatal("客户端连接redis服务端失败") }else { fmt.Println("客户端已成功连接至redis服务端") } }
string类型数据操作
//string类型数据操作 //redis命令:set key val func set(key,val string){ //有效期为0表示不设置有效期,非0表示经过该时间后键值对失效 result,err := client.Set(key,val,0).Result() if err != nil { log.Fatal(err) } fmt.Println(result) } //redis命令:get key func get(key string){ val,err := client.Get(key).Result() if err != nil { log.Fatal(err) } fmt.Println(val) } //redis命令:mset key1 val1 key2 val2 key3 val3 ... func mset(key1,val1,key2,val2,key3,val3 string){ //以下三种方式都可以,习惯于对象操作的我优先选择第三种 //result,err := client.MSet(key1,val1,key2,val2,key3,val3).Result() //result,err := client.MSet([]string{key1,val1,key2,val2,key3,val3}).Result() result,err := client.MSet(map[string]interface{ }{ key1:val1,key2:val2,key3:val3}).Result() if err != nil { log.Fatal(err) } fmt.Println(result) } //redis命令:mget key1 key2 key3 ... func mget(key1,key2,key3 string){ vals,err := client.MGet(key1,key2,key3).Result() if err != nil { log.Fatal(err) } for k,v := range vals { fmt.Printf("k = %v v = %s\n",k,v) } } //redis命令:del key1 key2 key3 ... func del(key1,key2,key3 string){ result,err := client.Del(key1,key2,key3).Result() if err != nil { log.Fatal(err) } fmt.Println(result) } //redis命令:getrange key start end func getrange(key string,start,end int64){ val,err := client.GetRange(key,start,end).Result() if err != nil { log.Fatal(err) } fmt.Println(val) } //redis命令:strlen key func strlen(key string){ len,err := client.StrLen(key).Result() if err != nil { log.Fatal(err) } fmt.Println(len) } //redis命令:setex key time val func setex(key,val string,expire int){ //time.Duration其实也是int64,不过是int64的别名罢了,但这里如果expire使用int64也无法与time.Second运算, //因为int64和Duration虽然本质一样,但表面上属于不同类型,go语言中不同类型是无法做运算的 result,err := client.Set(key,val,time.Duration(expire) * time.Second).Result() if err != nil { log.Fatal(err) } fmt.Println(result) } //redis命令:append key val func append(key,val string){ //将val插入key对应值的末尾,并返回新串长度 len,err := client.Append(key,val).Result() if err != nil { log.Fatal(err) } fmt.Println(len) } //redis命令:exists key func exists(key string){ //返回1表示存在,0表示不存在 isExists,err := client.Exists(key).Result() if err != nil { log.Fatal(err
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。