Redeo构建 TCP 服务的高性能框架
Redeo 是用于构建与 redis 协议兼容的 TCP 服务器/服务的高性能框架。
这个仓库被组织成多个组成部分:
- root 包包含构建 redis 协议兼容的高性能服务器的框架
- resp 实现了用于处理 RESP(REdis 序列化协议)、客户端和服务器端的低级基元。它包含读者和作者读/写请求和响应的基本包装器
- 客户端包含一个极简的池化客户端
有关完整文档和示例,请参阅各个包和官方 API 文档:https : //godoc.org/github.com/bsm/redeo。
例子
带有两个命令的简单服务器示例:
package main import ( "net" "github.com/bsm/redeo" ) func main() { srv := redeo.NewServer(nil) // Define handlers srv.HandleFunc("ping", func(w resp.ResponseWriter, _ *resp.Command) { w.AppendInlineString("PONG") }) srv.HandleFunc("info", func(w resp.ResponseWriter, _ *resp.Command) { w.AppendBulkString(srv.Info().String()) }) // More handlers; demo usage of redeo.WrapperFunc srv.Handle("echo", redeo.WrapperFunc(func(c *resp.Command) interface{} { if c.ArgN() != 1 { return redeo.ErrWrongNumberOfArgs(c.Name) } return c.Arg(0) })) // Open a new listener lis, err := net.Listen("tcp", ":9736") if err != nil { panic(err) } defer lis.Close() // Start serving (blocking) srv.Serve(lis) }
更复杂的处理程序:
func main() { mu := sync.RWMutex{} data := make(map[string]string) srv := redeo.NewServer(nil) srv.HandleFunc("set", func(w resp.ResponseWriter, c *resp.Command) { if c.ArgN() != 2 { w.AppendError(redeo.WrongNumberOfArgs(c.Name)) return } key := c.Arg(0).String() val := c.Arg(1).String() mu.Lock() data[key] = val mu.Unlock() w.AppendInt(1) }) srv.HandleFunc("get", func(w resp.ResponseWriter, c *resp.Command) { if c.ArgN() != 1 { w.AppendError(redeo.WrongNumberOfArgs(c.Name)) return } key := c.Arg(0).String() mu.RLock() val, ok := data[key] mu.RUnlock() if ok { w.AppendBulkString(val) return } w.AppendNil() }) }
Redeo 还支持命令包装器:
func main() { mu := sync.RWMutex{} data := make(map[string]string) srv := redeo.NewServer(nil) srv.Handle("set", redeo.WrapperFunc(func(c *resp.Command) interface{} { if c.ArgN() != 2 { return redeo.ErrWrongNumberOfArgs(c.Name) } key := c.Arg(0).String() val := c.Arg(1).String() mu.Lock() data[key] = val mu.Unlock() return 1 })) srv.Handle("get", redeo.WrapperFunc(func(c *resp.Command) interface{} { if c.ArgN() != 1 { return redeo.ErrWrongNumberOfArgs(c.Name) } key := c.Arg(0).String() mu.RLock() val, ok := data[key] mu.RUnlock() if ok { return val } return nil })) }
评论
ZYS高性能服务框架
核心特性1.基于swoole提供分布式服务器通讯服务2.基于thrift提供rpc远程调用服务3.基于HTML5提供在线网络直播平台服务4.基于swoole提供同步异步数据库连接池服务5.基于swo
ZYS高性能服务框架
0
workerman-webman高性能 HTTP 服务框架
webman 是一款基于 workerman 开发的高性能HTTP服务框架。webman 用于替代传
workerman-webman高性能 HTTP 服务框架
0
ZLMediaKit高性能流媒体服务框架
ZLMediaKit是一个基于C++11的高性能运营级流媒体服务框架。项目特点基于C++11开发,避免使用裸指针,代码稳定可靠,性能优越。支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/W
ZLMediaKit高性能流媒体服务框架
0
Prisma构建数据库的 GraphQL 服务框架
Prisma是一个快速构建GraphQL服务、RESTAPI、数据库服务的后端框架已支持MySQL,PostgreSQL,MongoDB等数据库,其他流行数据库正在开发中客户端已支持JavaScrip
Prisma构建数据库的 GraphQL 服务框架
0
workerman-webman高性能 HTTP 服务框架
webman是一款基于 workerman 开发的高性能HTTP服务框架。webman用于替代传统的php-fpm架构,提供超高性能可扩展的HTTP服务。你可以用webman开发网站,也可以开发HTT
workerman-webman高性能 HTTP 服务框架
0