Redis
本章节将介绍Redis的使用方法。
简介
Redis组件是go-redis/redis/v8
的二次封装。 该组件只封装了Redis的连接处理和日志处理,其余内容均为原生调用。
当Go-Sail启动时,如果启用,它将自动初始化Redis组件。之后开发者可以直接通过sail
关键字来调用。
main.go
import (
"github.com/keepchen/go-sail/v3/sail"
)
func main() {
sail.GetRedis()
}
使用方法
普遍的客户端
尽管Redis分为单实例、集群等多种拓扑结构,但go-redis/redis/v8
提供了较为普遍的客户端调用方式,这样可以屏蔽底层差异从而降低使用门槛。
main.go
import (
"github.com/keepchen/go-sail/v3/sail"
)
func main() {
sail.GetRedis().Get(ctx, key)
}
如果你能明确你的连接类型,那么你通过断言或者是直接获取的方式获取不同类型的客户端实例。
类型断言
main.go
import (
"github.com/keepchen/go-sail/v3/sail"
redisLib "github.com/go-redis/redis/v8"
)
func main() {
sail.GetRedis().(*redisLib.Client).Get(ctx, key)
sail.GetRedis().(*redisLib.ClusterClient).Get(ctx, key)
}
Go-Sail也提供了直接获取不同类型实例的语法糖。
单机
main.go
import (
"github.com/keepchen/go-sail/v3/sail"
)
func main() {
sail.GetRedisStandalone().Get(ctx, key)
}
集群
main.go
import (
"github.com/keepchen/go-sail/v3/sail"
)
func main() {
sail.GetRedisCluster().Get(ctx, key)
}
其他
更多原生调用方法请查看redis/go-redis/v8的官方文档。
进阶
新实例
在某些特定场景下,开发者可能需要单独创建一个新的Redis实例,这个时候可以使用Go-Sail提供的创建新实例语法糖。
main.go
import (
"github.com/keepchen/go-sail/v3/lib/redis"
"github.com/keepchen/go-sail/v3/sail"
)
func main() {
conf := redis.Conf{....}
sail.NewRedis(conf)
}
提示
新实例将不再被Go-Sail接管,因此,开发者需要自行管理其生命周期,例如连接的关闭或释放。