bsm / Redeo
Licence: other
High-performance framework for building redis-protocol compatible TCP servers/services
Stars: ✭ 392
Programming Languages
go
31211 projects - #10 most used programming language
Projects that are alternatives of or similar to Redeo
Pythonstudy
Python related technologies used in work: crawler, data analysis, timing tasks, RPC, page parsing, decorator, built-in functions, Python objects, multi-threading, multi-process, asynchronous, redis, mongodb, mysql, openstack, etc.
Stars: ✭ 103 (-73.72%)
Mutual labels: rpc, redis
Advanced Java
😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识
Stars: ✭ 59,142 (+14987.24%)
Mutual labels: rpc, redis
Whatsmars
Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ + Elasticsearch)🔥🔥🔥🔥🔥
Stars: ✭ 1,389 (+254.34%)
Mutual labels: rpc, redis
Finagle
A fault tolerant, protocol-agnostic RPC system
Stars: ✭ 8,126 (+1972.96%)
Mutual labels: rpc, redis
Butterfly
🔥 蝴蝶--【简单】【稳定】【好用】的 Python web 框架🦋 除 Python 2.7,无其他依赖; 🦋 butterfly 是一个 RPC 风格 web 框架,同时也是微服务框架,自带消息队列通信机制实现分布式
Stars: ✭ 82 (-79.08%)
Mutual labels: rpc, redis
Spring Dubbo Service
微服务 spring dubbo项目:dubbo rpc;druid数据源连接池;mybatis配置集成,多数据源;jmx监控MBean;定时任务;aop;ftp;测试;Metrics监控;参数验证;跨域处理;shiro权限控制;consul服务注册,发现;redis分布式锁;SPI服务机制;cat监控;netty服务代理;websocket;disconf;mongodb集成;rest;docker;fescar
Stars: ✭ 224 (-42.86%)
Mutual labels: rpc, redis
Thunder
⚡️ Nepxion Thunder is a distribution RPC framework based on Netty + Hessian + Kafka + ActiveMQ + Tibco + Zookeeper + Redis + Spring Web MVC + Spring Boot + Docker 多协议、多组件、多序列化的分布式RPC调用框架
Stars: ✭ 204 (-47.96%)
Mutual labels: rpc, redis
impress-cli
Impress Application Server Command line interface
Stars: ✭ 25 (-93.62%)
Mutual labels: service, rpc
server-framework
纯C的分布式服务器框架通用模板,跨平台,模块动态加载,tcp/可靠UDP,协程RPC,日志,集群建立
Stars: ✭ 24 (-93.88%)
Mutual labels: service, rpc
Twjitm
项目基于idea工作环境搭建的框架,添加mybatis3,spring4,springmvc4,以及redis。主要实现通过注解和反射自定义netty私有协议栈,实现在一条socket通道上传递不同的消息,采用支持tcp,udp和http协议
Stars: ✭ 26 (-93.37%)
Mutual labels: rpc, redis
Saea
SAEA.Socket is a high-performance IOCP framework TCP based on dotnet standard 2.0; Src contains its application test scenarios, such as websocket,rpc, redis driver, MVC WebAPI, lightweight message server, ultra large file transmission, etc. SAEA.Socket是一个高性能IOCP框架的 TCP,基于dotnet standard 2.0;Src中含有其应用测试场景,例如websocket、rpc、redis驱动、MVC WebAPI、轻量级消息服务器、超大文件传输等
Stars: ✭ 318 (-18.88%)
Mutual labels: rpc, redis
Remit
RabbitMQ-backed microservices supporting RPC, pubsub, automatic service discovery and scaling with no code changes.
Stars: ✭ 24 (-93.88%)
Mutual labels: rpc, service
Freestyle
A cohesive & pragmatic framework of FP centric Scala libraries
Stars: ✭ 627 (+59.95%)
Mutual labels: rpc, redis
rpc
RPC-like client-service implementation over messaging queue
Stars: ✭ 26 (-93.37%)
Mutual labels: service, rpc
Dis Seckill
👊SpringBoot+Zookeeper+Dubbo打造分布式高并发商品秒杀系统
Stars: ✭ 315 (-19.64%)
Mutual labels: rpc, redis
Meiam.system
.NET 5 / .NET Core 3.1 WebAPI + Vue 2.0 + RBAC 企业级前后端分离权限框架
Stars: ✭ 340 (-13.27%)
Mutual labels: service, redis
Redeo
The high-performance Swiss Army Knife for building redis-protocol compatible servers/services.
Parts
This repository is organised into multiple components:
- root package contains the framework for building redis-protocol compatible, high-performance servers.
- resp implements low-level primitives for dealing with RESP (REdis Serialization Protocol), client and server-side. It contains basic wrappers for readers and writers to read/write requests and responses.
- client contains a minimalist pooled client.
For full documentation and examples, please see the individual packages and the official API documentation: https://godoc.org/github.com/bsm/redeo.
Examples
A simple server example with two commands:
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)
}
More complex handlers:
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 also supports command wrappers:
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
}))
}
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].