一架梯子,一头程序猿,仰望星空!

golang 如何连接redis


下面介绍golang如何连接redis服务端。

1.golang连接redis

// 初始化一个新的redis client
client := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379", // redis地址
		Password: "", // redis没密码,没有设置,则留空
		DB:       0,  // 使用默认数据库
	})

通过例子,我们知道主要通过Options配置redis的连接参数,下面对Options参数进行详细说明。

提示:go-redis包自带了连接池,会自动维护redis连接,因此创建一次client即可,不要查询一次redis就关闭client。

2.Options参数详解

type Options struct {
	// 网络类型 tcp 或者 unix.
	// 默认是 tcp.
	Network string
	// redis地址,格式 host:port
	Addr string

	// 新建一个redis连接的时候,会回调这个函数
	OnConnect func(*Conn) error

	// redis密码,redis server没有设置可以为空。
	Password string
	
	// redis数据库,序号从0开始,默认是0,可以不用设置
	DB int

	// redis操作失败最大重试次数,默认不重试。
	MaxRetries int
	
	// 最小重试时间间隔.
	// 默认是 8ms ; -1 表示关闭.
	MinRetryBackoff time.Duration
	
	// 最大重试时间间隔
	// 默认是 512ms; -1 表示关闭.
	MaxRetryBackoff time.Duration

	// redis连接超时时间.
	// 默认是 5 秒.
	DialTimeout time.Duration
	
	// socket读取超时时间
	// 默认 3 秒.
	ReadTimeout time.Duration
	
	// socket写超时时间
	WriteTimeout time.Duration

	// redis连接池的最大连接数.
	// 默认连接池大小等于 cpu个数 * 10
	PoolSize int
	
	// redis连接池最小空闲连接数.
	MinIdleConns int
	// redis连接最大的存活时间,默认不会关闭过时的连接.
	MaxConnAge time.Duration
	
	// 当你从redis连接池获取一个连接之后,连接池最多等待这个拿出去的连接多长时间。
	// 默认是等待 ReadTimeout + 1 秒.
	PoolTimeout time.Duration
	// redis连接池多久会关闭一个空闲连接.
	// 默认是 5 分钟. -1 则表示关闭这个配置项
	IdleTimeout time.Duration
	// 多长时间检测一下,空闲连接
	// 默认是 1 分钟. -1 表示关闭空闲连接检测
	IdleCheckFrequency time.Duration

	// 只读设置,如果设置为true, redis只能查询缓存不能更新。
	readOnly bool
}