mirror of
https://github.com/gogrlx/bitcask.git
synced 2026-04-16 18:14:57 -07:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb2335e3c1 | ||
|
|
9a8aca55ba | ||
|
|
32b782b229 | ||
|
|
146f777683 |
5
Makefile
5
Makefile
@@ -1,6 +1,7 @@
|
|||||||
.PHONY: dev build generate install image release profile bench test clean
|
.PHONY: dev build generate install image release profile bench test clean
|
||||||
|
|
||||||
CGO_ENABLED=0
|
CGO_ENABLED=0
|
||||||
|
VERSION=$(shell git describe --abbrev=0 --tags)
|
||||||
COMMIT=$(shell git rev-parse --short HEAD)
|
COMMIT=$(shell git rev-parse --short HEAD)
|
||||||
|
|
||||||
all: dev
|
all: dev
|
||||||
@@ -12,11 +13,11 @@ dev: build
|
|||||||
build: clean generate
|
build: clean generate
|
||||||
@go build \
|
@go build \
|
||||||
-tags "netgo static_build" -installsuffix netgo \
|
-tags "netgo static_build" -installsuffix netgo \
|
||||||
-ldflags "-w -X $(shell go list)/.Commit=$(COMMIT)" \
|
-ldflags "-w -X $(shell go list).Version=$(VERSION) -X $(shell go list).Commit=$(COMMIT)" \
|
||||||
./cmd/bitcask/...
|
./cmd/bitcask/...
|
||||||
@go build \
|
@go build \
|
||||||
-tags "netgo static_build" -installsuffix netgo \
|
-tags "netgo static_build" -installsuffix netgo \
|
||||||
-ldflags "-w -X $(shell go list)/.Commit=$(COMMIT)" \
|
-ldflags "-w -X $(shell go list).Version=$(VERSION) -X $(shell go list).Commit=$(COMMIT)" \
|
||||||
./cmd/bitcaskd/...
|
./cmd/bitcaskd/...
|
||||||
|
|
||||||
generate:
|
generate:
|
||||||
|
|||||||
32
README.md
32
README.md
@@ -57,6 +57,38 @@ $ bitcask -p /tmp/db get Hello
|
|||||||
World
|
World
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Usage (server)
|
||||||
|
|
||||||
|
There is also a builtin very simple Redis-compatible server called `bitcaskd`:
|
||||||
|
|
||||||
|
```#!bash
|
||||||
|
$ ./bitcaskd ./tmp
|
||||||
|
INFO[0000] starting bitcaskd v0.0.7@146f777 bind=":6379" path=./tmp
|
||||||
|
```
|
||||||
|
|
||||||
|
Example session:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ telnet localhost 6379
|
||||||
|
Trying ::1...
|
||||||
|
Connected to localhost.
|
||||||
|
Escape character is '^]'.
|
||||||
|
SET foo bar
|
||||||
|
+OK
|
||||||
|
GET foo
|
||||||
|
$3
|
||||||
|
bar
|
||||||
|
DEL foo
|
||||||
|
:1
|
||||||
|
GET foo
|
||||||
|
$-1
|
||||||
|
PING
|
||||||
|
+PONG
|
||||||
|
QUIT
|
||||||
|
+OK
|
||||||
|
Connection closed by foreign host.
|
||||||
|
```
|
||||||
|
|
||||||
## Performance
|
## Performance
|
||||||
|
|
||||||
Benchmarks run on a 11" Macbook with a 1.4Ghz Intel Core i7:
|
Benchmarks run on a 11" Macbook with a 1.4Ghz Intel Core i7:
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ func TestMerge(t *testing.T) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
t.Run("Open", func(t *testing.T) {
|
t.Run("Open", func(t *testing.T) {
|
||||||
db, err = Open(testdir, MaxDatafileSize(1024))
|
db, err = Open(testdir, WithMaxDatafileSize(1024))
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -75,8 +75,8 @@ func main() {
|
|||||||
conn.WriteError("ERR wrong number of arguments for '" + string(cmd.Args[0]) + "' command")
|
conn.WriteError("ERR wrong number of arguments for '" + string(cmd.Args[0]) + "' command")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
key := string(cmd.Args[0])
|
key := string(cmd.Args[1])
|
||||||
value := cmd.Args[1]
|
value := cmd.Args[2]
|
||||||
err = db.Put(key, value)
|
err = db.Put(key, value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
conn.WriteString(fmt.Sprintf("ERR: %s", err))
|
conn.WriteString(fmt.Sprintf("ERR: %s", err))
|
||||||
@@ -88,7 +88,7 @@ func main() {
|
|||||||
conn.WriteError("ERR wrong number of arguments for '" + string(cmd.Args[0]) + "' command")
|
conn.WriteError("ERR wrong number of arguments for '" + string(cmd.Args[0]) + "' command")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
key := string(cmd.Args[0])
|
key := string(cmd.Args[1])
|
||||||
value, err := db.Get(key)
|
value, err := db.Get(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
conn.WriteNull()
|
conn.WriteNull()
|
||||||
@@ -100,7 +100,7 @@ func main() {
|
|||||||
conn.WriteError("ERR wrong number of arguments for '" + string(cmd.Args[0]) + "' command")
|
conn.WriteError("ERR wrong number of arguments for '" + string(cmd.Args[0]) + "' command")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
key := string(cmd.Args[0])
|
key := string(cmd.Args[1])
|
||||||
err := db.Delete(key)
|
err := db.Delete(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
conn.WriteInt(0)
|
conn.WriteInt(0)
|
||||||
|
|||||||
Reference in New Issue
Block a user