// finalizer package main import ( "fmt" // "log" "time" ) func remover(id int) { var conn = dbs.rdb.Get() defer conn.Close() for { rem := <-remove[id] // wg.Add(1) start := time.Now() for i := range rem.logins { login := rem.logins[i] // cancella da Redis la riga di login inserita partendo da 1 conn.Send("lrem", rem.user, "1", login) } // se ci sono errori o non e' vuota la lista di logins reinserisce lo user if rem.error || !rem.empty { if opts.Debug { fmt.Printf("SADD (%d): %s\n", id, rem.user) } conn.Send("sadd", "llindex", rem.user) if count.GetErr() >= opts.MaxError { exit() } } conn.Send("expire", rem.user, opts.RedisTTL.Seconds()) conn.Flush() count.AddRem(len(rem.logins)) if opts.Debug { fmt.Printf("LREM (%d): %s - %d - %+v\n", id, rem.user, len(rem.logins), time.Since(start)) } wg.Done() count.DelWG(id) } }