Go with the language of the operating redis
go language redis redis need to download the official Kit
In go_path execution path: go get github.com/garyburd/redigo/redis
If you can not install the git go behind the link to download a zip package, then extract to a local path on it gopath
gopath path if you do not know it to look at the environment variable configuration parameters, can often visible
Of course there are tools on redis more than this kind, there is not one by one example, that the most important thing is your understanding of the foundation and redis command
redis official documents Address: http://redisdoc.com/string/index.html
Simple example
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func string() {
//通过go向redis 写入数据和读取数据
//1. 链接到go
conn, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println("reis connect err=", err)
return
}
defer conn.Close()
//2. 通过go向redis写入数据 string[key-val]
_, err = conn.Do("Set", "name", "tom猫")
if err != nil {
fmt.Printf("Set err=%v \n", err)
}
//3. 从redis读取数据
r, err := redis.String(conn.Do("Get", "name"))
if err != nil {
fmt.Println("get err=", err)
return
}
//name, ok := r.(string)
fmt.Println("name:", r)
}
func main() {
//其实都是操作命令 熟练使用redis的命令基本上就会了
//fixme redis 文档地址: http://redisdoc.com/string/index.html
//string()
//hash()
//list()
subscribe()
}
func subscribe() {
c, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println(err)
return
}
defer c.Close()
psc := redis.PubSubConn{c}
psc.Subscribe("redChatRoom")
for {
switch v := psc.Receive().(type) {
case redis.Message:
fmt.Printf("%s: message: %s\n", v.Channel, v.Data)
case redis.Subscription:
fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count)
case error:
fmt.Println(v)
return
}
}
}
func list() {
//1.连接到redis数据库
conn,err :=redis.Dial("tcp","127.0.0.1:6379")
if err != nil{
fmt.Println("redis连接失败,错误信息:",err)
return
}
defer conn.Close()
fmt.Println("redis连接成功")
//_, err = conn.Do("LPush", "heroList", "songjiang", 23, "long", 29)
//if err != nil {
// fmt.Println(err)
// return
//}
//fmt.Println("LPush success")
//values, _ := redis.Values(conn.Do("lrange", "heroList", "0", "100"))
str, err := redis.String(conn.Do("RPop", "heroList"))
if err != nil {
fmt.Println(err)
return
}
fmt.Println(str)
//for _, v := range values {
// fmt.Println(v)
//}
// 或者
//var v1 string
//redis.Scan(values, &v1)
//fmt.Println(v1)
}
func hash() {
////通过go向redis 写入数据和读取数据
////1. 链接到go
//conn, err := redis.Dial("tcp", "127.0.0.1:6379")
//if err != nil {
// fmt.Println("reis connect err=", err)
// return
//}
//fmt.Println("-----------")
//
//defer conn.Close()
//2. 通过go向redis写入数据 string[key-val]
//_, err = conn.Do("HSet", "user", "name", "john")
//if err != nil {
// fmt.Printf("Set err=%v \n", err)
//}
//_, err = conn.Do("HSet", "user", "age", 18)
//if err != nil {
// fmt.Printf("Set err=%v \n", err)
//}
//_, err = conn.Do("HSet", "user", "gender", "boy")
//if err != nil {
// fmt.Printf("Set err=%v \n", err)
//}
//
////3. 从redis读取数据
//
//r, err := redis.String(conn.Do("HGet", "user", "name"))
//if err != nil {
// fmt.Println("get err=", err)
// return
//}
//
////name, ok := r.(string)
//fmt.Println("name:", r)
/*
批量操作
*/
//1.连接到redis数据库
con,err :=redis.Dial("tcp","127.0.0.1:6379")
if err != nil{
fmt.Println("redis连接失败,错误信息:",err)
return
}
defer con.Close()
fmt.Println("redis连接成功")
//2.通过go向redis写入数据
_,err = con.Do("HMSet","user2","name","Bob大米","age","19")
if err != nil{
fmt.Println("hmset出错,错误信息:",err)
return
}
fmt.Println("hmset ok")
//3.通过go向redis读取数据
reply,err := redis.Strings(con.Do("HMGet","user2","name","age"))
if err != nil{
fmt.Println("hmget出错,错误信息:",err)
return
}
fmt.Println("hmget ok")
for i,v := range reply{
fmt.Printf("[%d]=%s\t",i,v)
}
}
Create a connection pool redis
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
var pool *redis.Pool
func init() {
pool = &redis.Pool{
MaxIdle:8,// 最大空闲链接
MaxActive:0,// 表示和数据库的最大连接数
IdleTimeout:100,// 最大空闲时间
Dial: func() (redis.Conn, error) {
return redis.Dial("tcp", "localhost:6379")
},
}
}
func main() {
//先从pool 取出一个链接
conn := pool.Get()
defer conn.Close()
//
_, err := conn.Do("Set", "name", "hiram~")
if err != nil {
fmt.Println(err)
return
}
r, err := redis.String(conn.Do("Get", "name"))
if err != nil {
fmt.Println(err)
}
fmt.Println(r)
}