func main() { runtime.GOMAXPROCS(runtime.NumCPU()) flag.Parse() var cfg *config.Config var err error if len(*configFile) == 0 { println("no config set, using default config") cfg = config.NewConfigDefault() } else { cfg, err = config.NewConfigWithFile(*configFile) } if err != nil { println(err.Error()) return } if len(*dbName) > 0 { cfg.DBName = *dbName } var app *server.App app, err = server.NewApp(cfg) if err != nil { println(err.Error()) return } sc := make(chan os.Signal, 1) signal.Notify(sc, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) go func() { <-sc app.Close() }() go func() { log.Println(http.ListenAndServe("localhost:6060", nil)) }() app.Run() }
func main() { flag.Parse() if len(*configPath) == 0 { println("need ledis config file") return } cfg, err := config.NewConfigWithFile(*configPath) if err != nil { println(err.Error()) return } if len(*dumpPath) == 0 { println("need dump file") return } if len(cfg.DataDir) == 0 { println("must set data dir") return } ldb, err := ledis.Open(cfg) if err != nil { println("ledis open error ", err.Error()) return } err = loadDump(cfg, ldb) ldb.Close() if err != nil { println(err.Error()) return } println("Load OK") }
func main() { flag.Parse() if len(*fileName) == 0 { println("need ledis config file") return } cfg, err := config.NewConfigWithFile(*fileName) if err != nil { println(err.Error()) return } if len(cfg.DataDir) == 0 { println("must set data dir") return } if err = store.Repair(cfg); err != nil { println("repair error: ", err.Error()) } }
func main() { flag.Parse() if len(*configPath) == 0 { println("need ledis config file") return } cfg, err := config.NewConfigWithFile(*configPath) if err != nil { println(err.Error()) return } if len(*dataDir) > 0 { cfg.DataDir = *dataDir } if len(*dbName) > 0 { cfg.DBName = *dbName } db, err := store.Open(cfg) if err != nil { println(err.Error()) return } // upgrade: ttl time key 101 to ttl time key 103 wb := db.NewWriteBatch() for i := 0; i < cfg.Databases; i++ { minK, maxK := oldKeyPair(uint8(i)) it := db.RangeIterator(minK, maxK, store.RangeROpen) num := 0 for ; it.Valid(); it.Next() { dt, k, t, err := decodeOldKey(uint8(i), it.RawKey()) if err != nil { continue } newKey := encodeNewKey(uint8(i), dt, k, t) wb.Put(newKey, it.RawValue()) wb.Delete(it.RawKey()) num++ if num%1024 == 0 { if err := wb.Commit(); err != nil { fmt.Printf("commit error :%s\n", err.Error()) } } } it.Close() if err := wb.Commit(); err != nil { fmt.Printf("commit error :%s\n", err.Error()) } } }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) flag.Parse() var cfg *config.Config var err error if len(*configFile) == 0 { println("no config set, using default config") cfg = config.NewConfigDefault() } else { cfg, err = config.NewConfigWithFile(*configFile) } if err != nil { println(err.Error()) return } if len(*addr) > 0 { cfg.Addr = *addr } if len(*dataDir) > 0 { cfg.DataDir = *dataDir } if len(*dbName) > 0 { cfg.DBName = *dbName } if *databases > 0 { cfg.Databases = *databases } // check bool flag, use it. for _, arg := range os.Args { arg := strings.ToLower(arg) switch arg { case "-rpl", "-rpl=true", "-rpl=false": cfg.UseReplication = *rpl case "-readonly", "-readonly=true", "-readonly=false": cfg.Readonly = *readonly case "-rpl_sync", "-rpl_sync=true", "-rpl_sync=false": cfg.Replication.Sync = *rplSync } } if len(*slaveof) > 0 { cfg.SlaveOf = *slaveof cfg.Readonly = true cfg.UseReplication = true } if *ttlCheck > 0 { cfg.TTLCheckInterval = *ttlCheck } var app *server.App app, err = server.NewApp(cfg) if err != nil { println(err.Error()) return } sc := make(chan os.Signal, 1) signal.Notify(sc, os.Kill, os.Interrupt, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) if *usePprof { go func() { log.Println(http.ListenAndServe(fmt.Sprintf(":%d", *pprofPort), nil)) }() } go app.Run() <-sc println("ledis-server is closing") app.Close() println("ledis-server is closed") }