High-performance RESP-Server multi-threaded framework, based on RawEpoll model.
- Ultra high performance
- Fully multi-threaded support
- Low CPU resource consumption
- Compatible with redis protocol
- Create a Redis compatible server with RawEpoll model in Go
go get -u github.com/IceFireDB/redhub
Here is a simple framework usage example,support the following redis commands:
- SET key value
- GET key
- DEL key
- PING
- QUIT
You can run this example in terminal:
go run example/memory_kv/server.go
Machine information
OS : Debian Buster 10.6 64bit
CPU : 8 CPU cores
Memory : 64.0 GiB
Go Version : go1.16.5 linux/amd64
$ ./redis-server --port 6380 --appendonly no
$ redis-benchmark -h 127.0.0.1 -p 6380 -n 50000000 -t set,get -c 512 -P 1024 -q
SET: 2306060.50 requests per second
GET: 3096742.25 requests per second
$ ./redis-server --port 6380 --appendonly no
$ redis-benchmark -h 127.0.0.1 -p 6380 -n 50000000 -t set,get -c 512 -P 1024 -q
SET: 2076325.75 requests per second
GET: 2652801.50 requests per second
io-threads-do-reads yes
io-threads 8
$ ./redis-server redis.conf
$ redis-benchmark -h 127.0.0.1 -p 6379 -n 50000000 -t set,get -c 512 -P 1024 -q
SET: 1944692.88 requests per second
GET: 2375184.00 requests per second
$ go run example/clone.go
$ redis-benchmark -h 127.0.0.1 -p 6380 -n 50000000 -t set,get -c 512 -P 1024 -q
SET: 2332742.25 requests per second
GET: 14654162.00 requests per second
$ go run example/server.go
$ redis-benchmark -h 127.0.0.1 -p 6380 -n 50000000 -t set,get -c 512 -P 1024 -q
SET: 4087305.00 requests per second
GET: 16490765.00 requests per second
When you use this software, you have agreed and stated that the author, maintainer and contributor of this software are not responsible for any risks, costs or problems you encounter. If you find a software defect or BUG, please submit a patch to help improve it!