辽宁城乡住房建设厅官网证书查询,怎么优化整站,网站开发风险分析,网站设计的主要风格golang 手搓redis服务器仓库地址:实现思路: golang 手搓redis服务器
仓库地址:
仓库: https://github.com/dengjiayue/my-redis.git
实现思路:
● 协议: tcp通信 ● 数据包: 长度(4byte)方法(1byte)数据json ● 数据处理: 单线程map读写 ○ 依次处理待处理队列的请求(chan)… golang 手搓redis服务器仓库地址:实现思路: golang 手搓redis服务器
仓库地址:
仓库: https://github.com/dengjiayue/my-redis.git
实现思路:
● 协议: tcp通信 ● 数据包: 长度(4byte)方法(1byte)数据json ● 数据处理: 单线程map读写 ○ 依次处理待处理队列的请求(chan)数据,处理并返回 ■ 队列大小: Max指定 ■ 构建请求处理池: 不需要反复创建chan 性能压测:
package srcimport (fmttestingtime
)// 压测my redis
func BenchmarkMyRedisWrite(b *testing.B) {c : NewClient(localhost:8080)go c.HandleResp()defer c.Close()//开始计时b.StartTimer()for i : 0; i b.N; i {c.Set(name, zhangsan)}// BenchmarkMyRedis-8 28090 40598 ns/op 642 B/op 14 allocs/op
}// 压测my redis
func BenchmarkMyRedisRead(b *testing.B) {c : NewClient(localhost:8080)go c.HandleResp()defer c.Close()//开始计时b.StartTimer()for i : 0; i b.N; i {c.Get(name)}// BenchmarkMyRedisRead-8 27771 44423 ns/op 588
}// 并发压测(写)
func BenchmarkMyRedisConcurrencyWrite(b *testing.B) {c : NewClient(localhost:8080)go c.HandleResp()defer c.Close()//开始计时b.StartTimer()b.RunParallel(func(pb *testing.PB) {for pb.Next() {c.Set(name, zhangsan)}})// BenchmarkMyRedisConcurrencyWrite-8 90667 12439 ns/op 612 B/op 14 allocs/op
}// 并发压测(读)
func BenchmarkMyRedisConcurrencyRead(b *testing.B) {c : NewClient(localhost:8080)go c.HandleResp()defer c.Close()//开始计时b.StartTimer()b.RunParallel(func(pb *testing.PB) {for pb.Next() {c.Get(name)}})// BenchmarkMyRedisConcurrencyRead-8 89955 12198 ns/op 512 B/op 15 allocs/op
}单tcp连接可以达到9w左右的读写的QPS