golang操作redis主要有两个库,go-redis和redigo。
go-redis:star数更多,支持连接哨兵及集群模式的Redis
redigo:star数少一些,操作更简单
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") //去掉过期时间