Skip to content
/ radio Public

Radio is a library for creating RESP (REdis Serialization Protocol) comaptible services. 📻

License

Notifications You must be signed in to change notification settings

spy16/radio

Repository files navigation

Radio

GoDoc Go Report Card

Radio is a Go (or Golang) library for creating RESP (REdis Serialization Protocol) compatible services/servers.

Features

  • Fast Redis compatible server library
  • Single RESP parser (radio.Reader) that can be used for both client-side and server-side parsing
  • Parser supports Inline Commands to use with raw tcp clients (example: telnet)
  • RESP value types to simplify wrapping values and serializing
  • RESP Parser that can be used with any io.Reader implementation (e.g., AOF files etc.)

Benchmarks

Benchmarks were run using redis-benchmark tool.

  • Go Version: go version go1.12.1 darwin/amd64
  • Host: MacBook Pro 15" Intel Core i7, 2.8 GHz, 4 Cores + 16GB Memory

Redis:

  • Run Server: redis-server --port 9736 --appendonly no

  • Run Benchmark: redis-benchmark -h 127.0.0.1 -p 9736 -q -t PING -c 100 -n 1000000

    PING_INLINE: 80515.30 requests per second
    PING_BULK: 78678.20 requests per second
    

Redcon:

  • Run Server: See tidwall/redcon

  • Except ping command, everything else was removed from the example above

  • Run Benchmark: redis-benchmark -h 127.0.0.1 -p 6380 -q -t PING -c 100 -n 1000000

    PING_INLINE: 71669.17 requests per second
    PING_BULK: 71828.76 requests per second
    

Radio:

  • Run Server: go run examples/main.go -addr :8080

  • Run Benchmark: redis-benchmark -h 127.0.0.1 -p 8080 -q -t PING -c 100 -n 1000000

    PING_INLINE: 71199.71 requests per second
    PING_BULK: 71301.25 requests per second
    

TODO

  • Add pieplining support
  • Pub sub support
  • Client functions

About

Radio is a library for creating RESP (REdis Serialization Protocol) comaptible services. 📻

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published