mirror of
https://gitee.com/sjqzhang/go-fastdfs.git
synced 2024-12-02 03:08:11 +08:00
80 lines
1.7 KiB
Go
80 lines
1.7 KiB
Go
package doc
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/sjqzhang/goutil"
|
|
"github.com/syndtr/goleveldb/leveldb"
|
|
"github.com/syndtr/goleveldb/leveldb/filter"
|
|
"github.com/syndtr/goleveldb/leveldb/opt"
|
|
"time"
|
|
)
|
|
|
|
type FileInfo struct {
|
|
Name string `json:"name"`
|
|
ReName string `json:"rename"`
|
|
Path string `json:"path"`
|
|
Md5 string `json:"md5"`
|
|
Size int64 `json:"size"`
|
|
Peers []string `json:"peers"`
|
|
Scene string `json:"scene"`
|
|
TimeStamp int64 `json:"timeStamp"`
|
|
OffSet int64 `json:"offset"`
|
|
retry int
|
|
op string
|
|
}
|
|
|
|
func testDB() {
|
|
|
|
util := goutil.Common{}
|
|
o := &opt.Options{
|
|
Filter: filter.NewBloomFilter(256),
|
|
CompactionTableSize: 1024 * 1024 * 20,
|
|
WriteBuffer: 1024 * 1024 * 20,
|
|
}
|
|
db, err := leveldb.OpenFile("path/to/db", o)
|
|
|
|
count := 100000000
|
|
t := time.Now()
|
|
for i := 0; i < count; i++ {
|
|
name := fmt.Sprintf("%d", i)
|
|
md5 := util.MD5(name)
|
|
info := FileInfo{
|
|
Name: name,
|
|
ReName: name,
|
|
Path: "files/default/20191015/26/45/23",
|
|
Md5: md5,
|
|
Size: 0,
|
|
Peers: []string{"http://10.1.50.90:8080", "http://10.1.50.91:8080", "http://10.1.50.92:8080"},
|
|
Scene: "default",
|
|
TimeStamp: time.Now().Unix(),
|
|
OffSet: 0,
|
|
retry: 0,
|
|
op: "",
|
|
}
|
|
data, _ := json.Marshal(info)
|
|
err = db.Put([]byte(md5), data, nil)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
if i%100000 == 0 {
|
|
fmt.Println(time.Since(t), " ", i)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 1000; i++ {
|
|
t := time.Now()
|
|
k := fmt.Sprintf("%d", util.RandInt(0, count))
|
|
md5 := util.MD5(k)
|
|
db.Get([]byte(md5), nil)
|
|
fmt.Println(time.Since(t))
|
|
}
|
|
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
defer db.Close()
|
|
|
|
}
|