3、redis

golang操作redis主要有两个库,go-redis和redigo。

go-redis:star数更多,支持连接哨兵及集群模式的Redis

redigo:star数少一些,操作更简单

go-redis

安装

go get -u github.com/go-redis/redis

获取连接

package main

import (
	"fmt"
	"github.com/go-redis/redis"
	"time"
)

var RedisCli *redis.Client

func init() {
	// 配置连接信息
	option := redis.Options{
		Addr:     "127.0.0.1:6379", // 指定
		Password: "",
		DB:       0, // redis一共16个库,指定其中一个库即可

		//连接池容量及闲置连接数量
		PoolSize:     15, // 连接池最大socket连接数,默认为4倍CPU数, 4 * runtime.NumCPU
		MinIdleConns: 10, //在启动阶段创建指定数量的Idle连接,并长期维持idle状态的连接数不少于指定数量;。

		//超时
		DialTimeout:  5 * time.Second, //连接建立超时时间,默认5秒。
		ReadTimeout:  3 * time.Second, //读超时,默认3秒, -1表示取消读超时
		WriteTimeout: 3 * time.Second, //写超时,默认等于读超时
		PoolTimeout:  4 * time.Second, //当所有连接都处在繁忙状态时,客户端等待可用连接的最大等待时长,默认为读超时+1秒。

		//闲置连接检查包括IdleTimeout,MaxConnAge
		IdleCheckFrequency: 60 * time.Second, //闲置连接检查的周期,默认为1分钟,-1表示不做周期性检查,只在客户端获取连接时对闲置连接进行处理。
		IdleTimeout:        5 * time.Minute,  //闲置超时,默认5分钟,-1表示取消闲置超时检查
		MaxConnAge:         0 * time.Second,  //连接存活时长,从创建开始计时,超过指定时长则关闭连接,默认为0,即不关闭存活时长较长的连接

		//命令执行失败时的重试策略
		MaxRetries:      0,                      // 命令执行失败时,最多重试多少次,默认为0即不重试
		MinRetryBackoff: 8 * time.Millisecond,   //每次计算重试间隔时间的下限,默认8毫秒,-1表示取消间隔
		MaxRetryBackoff: 512 * time.Millisecond, //每次计算重试间隔时间的上限,默认512毫秒,-1表示取消间隔
	}
	// 获取客户端实例
	RedisCli = redis.NewClient(&option)
	// ping
	ping, err := RedisCli.Ping().Result()
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(ping)
}
func main() {

}

操作

字符串

//新增
Set("test", "123456", 0) //参数三为过期时间,0则为不设置过期时间
SetNX("test", "123456", 0) //不存在则新增
//查询
Get("test")
GetSet("test", "1234") //插入新值返回旧值
//操作
Incr("test") //自增1
Decr("test") //自减1

通用操作

Keys("t*") //查询所有n开头的key
DBSize() //查询key总数
Exists("test", "test1") //查询key是否存在,返回存在的个数
Del("test", "test1") //批量删除key,返回删除个数
Expire("test", 3 * time.Second) //设置过期时间
TTL("test1") //查询过期时间,如果不过期返回-1s
Persist("test1") //去掉过期时间