forked from latermoon/GoRedis
/
main.go
50 lines (41 loc) · 845 Bytes
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package main
import (
"flag"
"github.com/latermoon/GoRedis/redis"
"github.com/latermoon/GoRedis/rocks"
"github.com/latermoon/GoRedis/server"
"github.com/tecbot/gorocksdb"
"log"
"net"
)
func init() {
flag.StringVar(&address, "bind address", ":6380", "Bind address")
}
func main() {
flag.Parse()
log.Println("server start ...")
// new rocksdb
db := newRocksDB("/tmp/rocks_6380")
// new GoRedisServer handler
handler := server.New(db)
// register command handler
redis.Register(handler)
// Serve
lis, err := net.Listen("tcp", address)
if err != nil {
panic(err)
}
redis.Serve(lis)
}
func newRocksDB(dir string) *rocks.DB {
opts := gorocksdb.NewDefaultOptions()
opts.SetCreateIfMissing(true)
rdb, err := gorocksdb.OpenDb(opts, dir)
if err != nil {
panic(err)
}
return rocks.New(rdb)
}
var (
address string
)