Skip to content

Commit 6fdb2f5

Browse files
committed
More refactoring
1 parent b9b0627 commit 6fdb2f5

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

main.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,21 @@ func realMain() int {
9999
logger := log.New(os.Stdout, "", 0)
100100

101101
var db = new(uint8)
102+
// If the user passed a db as parameter, we only dump that db
102103
if c.Db >= 0 {
103104
*db = uint8(c.Db)
105+
} else {
106+
db = redisdump.AllDBs
104107
}
105108

106-
if err = redisdump.DumpServer(c.Host, c.Port, url.QueryEscape(redisPassword), db, tlshandler, c.Filter, c.NWorkers, c.WithTTL, c.BatchSize, c.Noscan, logger, serializer, progressNotifs); err != nil {
109+
s := redisdump.Host{
110+
Host: c.Host,
111+
Port: c.Port,
112+
Password: url.QueryEscape(redisPassword),
113+
TlsHandler: tlshandler,
114+
}
115+
116+
if err = redisdump.DumpServer(s, db, c.Filter, c.NWorkers, c.WithTTL, c.BatchSize, c.Noscan, logger, serializer, progressNotifs); err != nil {
107117
fmt.Fprintf(os.Stderr, "%s", err)
108118
return 1
109119
}

pkg/redisdump/redisdump.go

+15-4
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212
radix "github.com/mediocregopher/radix/v3"
1313
)
1414

15+
var AllDBs *uint8 = nil
16+
1517
func ttlToRedisCmd(k string, val int64) []string {
1618
return []string{"EXPIREAT", k, fmt.Sprint(time.Now().Unix() + val)}
1719
}
@@ -379,14 +381,21 @@ func DumpDB(client radix.Client, db *uint8, filter string, nWorkers int, withTTL
379381
return nil
380382
}
381383

384+
type Host struct {
385+
Host string
386+
Port int
387+
Password string
388+
TlsHandler *TlsHandler
389+
}
390+
382391
// DumpServer dumps all Keys from the redis server given by redisURL,
383392
// to the Logger logger. Progress notification informations
384393
// are regularly sent to the channel progressNotifications
385-
func DumpServer(redisHost string, redisPort int, redisPassword string, db *uint8, tlsHandler *TlsHandler, filter string, nWorkers int, withTTL bool, batchSize int, noscan bool, logger *log.Logger, serializer func([]string) string, progress chan<- ProgressNotification) error {
386-
redisURL := RedisURL(redisHost, fmt.Sprint(redisPort))
394+
func DumpServer(s Host, db *uint8, filter string, nWorkers int, withTTL bool, batchSize int, noscan bool, logger *log.Logger, serializer func([]string) string, progress chan<- ProgressNotification) error {
395+
redisURL := RedisURL(s.Host, fmt.Sprint(s.Port))
387396
getConnFunc := func(db *uint8) func(network, addr string) (radix.Conn, error) {
388397
return func(network, addr string) (radix.Conn, error) {
389-
dialOpts, err := redisDialOpts(redisPassword, tlsHandler, db)
398+
dialOpts, err := redisDialOpts(s.Password, s.TlsHandler, db)
390399
if err != nil {
391400
return nil, err
392401
}
@@ -396,7 +405,7 @@ func DumpServer(redisHost string, redisPort int, redisPassword string, db *uint8
396405
}
397406

398407
dbs := []uint8{}
399-
if db != nil {
408+
if db != AllDBs {
400409
dbs = []uint8{*db}
401410
} else {
402411
client, err := radix.NewPool("tcp", redisURL, nWorkers, radix.PoolConnFunc(getConnFunc(nil)))
@@ -416,6 +425,8 @@ func DumpServer(redisHost string, redisPort int, redisPassword string, db *uint8
416425
if err != nil {
417426
return err
418427
}
428+
defer client.Close()
429+
419430
if err = DumpDB(client, &db, filter, nWorkers, withTTL, batchSize, noscan, logger, serializer, progress); err != nil {
420431
return err
421432
}

0 commit comments

Comments
 (0)