linux go redis,在Go语言中操作使用Redis

需要先安装redigo

go get "github.com/garyburd/redigo/redis"

Go语言Redis客户端的简单示例

连接池 POOL

为了和redis建立连接,需要创建一个redis.Pool的对象

func newPool() *redis.Pool {

return &redis.Pool{

MaxIdle:  10,

MaxActive: 12000,

Dial: func() (redis.Conn, error) {

c, err := redis.Dial("tcp", ":6379")

if err != nil {

panic(err)

}

return c, err

},

}

}

测试连接 PING

如果想测试是否连接成功,可以使用 PING命令

func ping(c redis.Conn) error {

pong, err := c.Do("PING")

if err != nil {

return err

}

s, err := redis.String(pong, err)

if err != nil {

return err

}

fmt.Printf("PING Response = %s\n", s)

return nil

}

SET

func set(c redis.Conn) error {

_, err := c.Do("SET", "Favorite Movie", "Repo Man")

if err != nil {

return err

}

_, err = c.Do("SET", "Release Year", 1984)

if err != nil {

return err

}

return nil

}

GET

func get(c redis.Conn) error {

key := "Favorite Movie"

s, err := redis.String(c.Do("GET", key))

if err != nil {

return err

}

fmt.Printf("%s = %s\n", key, s)

key = "Release Year"

i, err := redis.Int(c.Do("GET", key))

if err != nil {

return err

}

fmt.Printf("%s = %d\n", key, i)

key = "Nonexistent Key"

s, err = redis.String(c.Do("GET", key))

if err == redis.ErrNil {

fmt.Printf("%s does not exist\n", key)

} else if err != nil {

return err

} else {

fmt.Printf("%s = %s\n", key, s)

}

return nil

}

SET STRUCT

func setStruct(c redis.Conn) error {

const objectPrefix string = "user:"

user := User{

Username:  "coderminer.com",

MobileID:  "12345678941",

Email:    "kevin@163.com",

FirstName: "coderminer.com",

LastName:  "coderminer.com",

}

json, err := json.Marshal(user)

if err != nil {

return err

}

_, err = c.Do("SET", objectPrefix+user.Username, json)

if err != nil {

return err

}

return nil

}

GET STRUCT

func getStruct(c redis.Conn) error {

const objectPrefix string = "user:"

username := "coderminer.com"

s, err := redis.String(c.Do("GET", objectPrefix+username))

if err == redis.ErrNil {

fmt.Println("User does not exist")

} else if err != nil {

return err

}

user := User{}

err = json.Unmarshal([]byte(s), &user)

fmt.Printf("%+v\n", user)

return nil

}

最终的代码

package main

import (

"encoding/json"

"fmt"

"github.com/garyburd/redigo/redis"

)

type User struct {

Username  string

MobileID  string

Email    string

FirstName string

LastName  string

}

func newPool() *redis.Pool {

return &redis.Pool{

MaxIdle:  10,

MaxActive: 12000,

Dial: func() (redis.Conn, error) {

c, err := redis.Dial("tcp", ":6379")

if err != nil {

panic(err)

}

return c, err

},

}

}

func ping(c redis.Conn) error {

pong, err := c.Do("PING")

if err != nil {

return err

}

s, err := redis.String(pong, err)

if err != nil {

return err

}

fmt.Printf("PING Response = %s\n", s)

return nil

}

func set(c redis.Conn) error {

_, err := c.Do("SET", "Favorite Movie", "Repo Man")

if err != nil {

return err

}

_, err = c.Do("SET", "Release Year", 1984)

if err != nil {

return err

}

return nil

}

func get(c redis.Conn) error {

key := "Favorite Movie"

s, err := redis.String(c.Do("GET", key))

if err != nil {

return err

}

fmt.Printf("%s = %s\n", key, s)

key = "Release Year"

i, err := redis.Int(c.Do("GET", key))

if err != nil {

return err

}

fmt.Printf("%s = %d\n", key, i)

key = "Nonexistent Key"

s, err = redis.String(c.Do("GET", key))

if err == redis.ErrNil {

fmt.Printf("%s does not exist\n", key)

} else if err != nil {

return err

} else {

fmt.Printf("%s = %s\n", key, s)

}

return nil

}

func setStruct(c redis.Conn) error {

const objectPrefix string = "user:"

user := User{

Username:  "coderminer.com",

MobileID:  "12345678941",

Email:    "kevin@163.com",

FirstName: "coderminer.com",

LastName:  "coderminer.com",

}

json, err := json.Marshal(user)

if err != nil {

return err

}

_, err = c.Do("SET", objectPrefix+user.Username, json)

if err != nil {

return err

}

return nil

}

func getStruct(c redis.Conn) error {

const objectPrefix string = "user:"

username := "coderminer.com"

s, err := redis.String(c.Do("GET", objectPrefix+username))

if err == redis.ErrNil {

fmt.Println("User does not exist")

} else if err != nil {

return err

}

user := User{}

err = json.Unmarshal([]byte(s), &user)

fmt.Printf("%+v\n", user)

return nil

}

func main() {

pool := newPool()

conn := pool.Get()

defer conn.Close()

err := ping(conn)

if err != nil {

fmt.Println(err)

}

err = set(conn)

if err != nil {

fmt.Println(err)

}

err = get(conn)

if err != nil {

fmt.Println(err)

}

err = setStruct(conn)

if err != nil{

fmt.Println(err)

}

err = getStruct(conn)

if err != nil{

fmt.Println(err)

}

}

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值