golang redis客户端

前言:
golang操作redis主要有两个库,go-redis和redigo。两者操作都比较简单,区别是:redigo更像一个client,执行各种操作都是通过Do函数去做的;redis-go对函数的封装更好。golang官方推荐使用redigo,所以项目中我使用了redigo。

1. 安装redigo代码包

go get github.com/gomodule/redigo/redis

2.  连接到redis server

package redisTool

import (
	"time"
	"github.com/gomodule/redigo/redis"
)

var RedisClientPool *redis.Pool

func InitRedis() {
	var (
		host string
		auth string
		db   int
	)

	host = "127.0.0.1:6379"
	auth = "abc" //redis connect密码
	db = 1
	RedisClientPool = &redis.Pool{
		MaxIdle:     10,
		MaxActive:   20,
		IdleTimeout: 180,
		Dial: func() (redis.Conn, error) {
			c, err := redis.Dial("tcp", host, redis.DialPassword(auth), redis.DialDatabase(db))
			if nil != err {
				return nil, err
			}
			return c, nil
		},
		TestOnBorrow: func(c redis.Conn, t time.Time) error {
			if time.Since(t) < time.Minute {
				return nil
			}
			_, err := c.Do("PING")
			return err
		},
	}
}

3. 操作redis

package main

import (
	"fmt"
	"redisTool"
	"github.com/gomodule/redigo/redis"
)

func main() {
        redisTool.InitRedis()
	redisClient := redisTool.RedisClientPool.Get();
	defer redisClient.Close()

	redisKey := "strKeyRedisEx"
	resSetValue, err := redis.String(redisClient.Do("setex", redisKey, 600, 1))
	if err != nil {
		msg := fmt.Sprintf("fail to set redis key=%s, error:%s", redisKey, err.Error())
		fmt.Println(msg)
	} else {
		msg := fmt.Sprintf("succeed to set redis key=%s, value=%#v", redisKey, resSetValue)
		fmt.Println(msg)
	}

	redisValue, err := redis.String(redisClient.Do("GET", redisKey))
	if err != nil {
		msg := fmt.Sprintf("fail to get content by redis key=%s, error:%s", redisKey, err.Error())
		fmt.Println(msg)
	} else {
		msg := fmt.Sprintf("succeed to get content by redis key=%s, value=%#v", redisKey, redisValue)
		fmt.Println(msg)
	}


	strRedisValue, err := redis.String(redisClient.Do("PING"))
	if err != nil {
		msg := fmt.Sprintf("fail to ping, error:%s", err.Error())
		fmt.Println(msg)
	} else {
		msg := fmt.Sprintf("succeed to ping, value=%#v", strRedisValue)
		fmt.Println(msg)
	}
}

执行结果如下:

succeed to set redis key=strKeyRedisEx, value="OK"
succeed to get content by redis key=strKeyRedisEx, value="1"
succeed to ping, value="PONG"

猜你喜欢

转载自blog.csdn.net/chinawangfei/article/details/84863913