回顾
上一节我们构建了一个redis连接池,最终通过如下的方式发送命令
func main() {
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
client.SendCommand("SET hello world")
发送命令的方式是通过SendComman函数传递完成的命令字符串,但是作为一个客户端我们更习惯
Set(key string, value interface{}, expiration time.Duration)
这种写法。
最终实现后的效果
func main() {
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
client.Set("hello","world",0)
}
实现流程图
代码结构
| internal
|pool
|conn.go 连接池每个连接的具体结构
|pool.go 连接池
|proto
|writer.go 写文件
|util
|strconv.go 类型转化函数
|log.go 日志处理函数
|command.go 命令参数处理文件
|commands.go 客户端命令实现文件
|options.go 配置文件
|redis.go redis客户端对外主文件,Client结构体存放的位置
实现代码
redis.go
package redis
import(
"github.com/learn-go/redis/internal/pool"
"github.com/learn-go/redis/internal/proto"
)
type Client struct {
//配置参数
opt *Options
//连接池
connPool pool.Pooler
//命令集
cmdable
//处理函数
pro