Skip to content

Commit

Permalink
More refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
yannh committed Feb 6, 2022
1 parent b9b0627 commit 6fdb2f5
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 5 deletions.
12 changes: 11 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,11 +99,21 @@ func realMain() int {
logger := log.New(os.Stdout, "", 0)

var db = new(uint8)
// If the user passed a db as parameter, we only dump that db
if c.Db >= 0 {
*db = uint8(c.Db)
} else {
db = redisdump.AllDBs
}

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 {
s := redisdump.Host{
Host: c.Host,
Port: c.Port,
Password: url.QueryEscape(redisPassword),
TlsHandler: tlshandler,
}

if err = redisdump.DumpServer(s, db, c.Filter, c.NWorkers, c.WithTTL, c.BatchSize, c.Noscan, logger, serializer, progressNotifs); err != nil {
fmt.Fprintf(os.Stderr, "%s", err)
return 1
}
Expand Down
19 changes: 15 additions & 4 deletions pkg/redisdump/redisdump.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import (
radix "github.com/mediocregopher/radix/v3"
)

var AllDBs *uint8 = nil

func ttlToRedisCmd(k string, val int64) []string {
return []string{"EXPIREAT", k, fmt.Sprint(time.Now().Unix() + val)}
}
Expand Down Expand Up @@ -379,14 +381,21 @@ func DumpDB(client radix.Client, db *uint8, filter string, nWorkers int, withTTL
return nil
}

type Host struct {
Host string
Port int
Password string
TlsHandler *TlsHandler
}

// DumpServer dumps all Keys from the redis server given by redisURL,
// to the Logger logger. Progress notification informations
// are regularly sent to the channel progressNotifications
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 {
redisURL := RedisURL(redisHost, fmt.Sprint(redisPort))
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 {
redisURL := RedisURL(s.Host, fmt.Sprint(s.Port))
getConnFunc := func(db *uint8) func(network, addr string) (radix.Conn, error) {
return func(network, addr string) (radix.Conn, error) {
dialOpts, err := redisDialOpts(redisPassword, tlsHandler, db)
dialOpts, err := redisDialOpts(s.Password, s.TlsHandler, db)
if err != nil {
return nil, err
}
Expand All @@ -396,7 +405,7 @@ func DumpServer(redisHost string, redisPort int, redisPassword string, db *uint8
}

dbs := []uint8{}
if db != nil {
if db != AllDBs {
dbs = []uint8{*db}
} else {
client, err := radix.NewPool("tcp", redisURL, nWorkers, radix.PoolConnFunc(getConnFunc(nil)))
Expand All @@ -416,6 +425,8 @@ func DumpServer(redisHost string, redisPort int, redisPassword string, db *uint8
if err != nil {
return err
}
defer client.Close()

if err = DumpDB(client, &db, filter, nWorkers, withTTL, batchSize, noscan, logger, serializer, progress); err != nil {
return err
}
Expand Down

0 comments on commit 6fdb2f5

Please sign in to comment.