redis

redis #

redis官网:https://redis.io/
redis官方推荐的go客户端代码库:https://redis.io/clients#go
go第三方提供的类库:
    1. go-redis: https://github.com/go-redis/redis
        文档: https://gopkg.in/redis.v6
        https://godoc.org/github.com/go-redis/redis#pkg-examples

推荐这个:https://github.com/go-redis/redis
https://github.com/gomodule/redigo

go-redis #

1. 下载依赖: go get -u github.com/go-redis/redis

封装go-redis连接 #

//实例化redis客户端 myRedisClient := NewmyRedisClient();
//或者 var myRedisClient *redis.Client;myRedisClient = NewmyRedisClient();
func NewmyRedisClient() *redis.Client {
	//返回 redis.Client结构体指针类型对象
	myRedisClient := redis.NewClient(&redis.Options{
                    Addr:     "localhost:6379", //redis地址和端口,格式: host:port
                    Password: "", //redis 密码,没有传空
                    DB:       0,  //redis db号
                })
	//返回string, error
	pong, err := myRedisClient.Ping().Result()
	fmt.Println(pong, err) //PONG <nil>
	return myRedisClient
}

使用示例: #

package main

import "fmt"
import "github.com/go-redis/redis"

//var myRedisClient *redis.Client
func main()  {
	myRedisClient := NewmyRedisClient();
	//设置缓存,返回 redis.StatusCmd结构体指针类型对象
	err := myRedisClient.Set("userinfo:123", "userid=123,usernmae=admin", 0).Err()
	if err != nil {//发生错误
		panic(err)
	}
	//获取redis内容,返回 redis.StatusCmd结构体指针类型对象
	getObj :=myRedisClient.Get("userinfo:123")
	fmt.Println("redis命令名:", getObj.Name()) //redis命令名: get
	if(getObj.Err() != nil) {//判断是否发生错误
		fmt.Println("获取redis发生错误" )
	} else {
		fmt.Println("redis命令名和值:", getObj.String()) //redis命令名和值: get userinfo:123: userid=123,usernmae=admin
		fmt.Println("1.获取到的值:", getObj.Val()) //1.获取到的值: userid=123,usernmae=admin
		val, err := getObj.Result() //返回值和错误对象
		if err != nil {
			panic(err)
		} else {
			fmt.Println("2.获取到的值:", val) //2.获取到的值: userid=123,usernmae=admin
		}
	}

	//对key值加1
	result, err := myRedisClient.Incr("mycounter:pv").Result()
	if err != nil {
		panic(err)
	} else {
		fmt.Println("加1之后的结果:",result) //加1之后的结果: 2
	}

	//调用redis命令规律:连接对象.redis命令名(参数列表).结果方法(), 如: result, err := myRedisClient.Incr("mycounter:pv").Result()
}

//实例化redis客户端 myRedisClient := NewmyRedisClient();
func NewmyRedisClient() *redis.Client {
	//返回 redis.Client结构体指针类型对象
	myRedisClient := redis.NewClient(&redis.Options{
                    Addr:     "localhost:6379", //redis地址和端口,格式: host:port
                    Password: "", //redis 密码,没有传空
                    DB:       0,  //redis db号
                })
	//返回string, error
	pong, err := myRedisClient.Ping().Result()
	fmt.Println(pong, err) //PONG <nil>
	return myRedisClient
}

Build by Loppo 0.6.15