Browse Source

MinerCharts DeleteOldMinerData

// DeleteOldMinerData deletes old miner data from the "miner" ZSets.
// All entries that are older than 24 hours are removed.

// DeleteOldShareData deletes old share data from the "share" ZSets.
// All entries that are older than 24 hours are removed.
master
yuriy0803 2 years ago
parent
commit
e578fea6f9
  1. 21
      api/server.go
  2. 62
      storage/redis.go

21
api/server.go

@ -134,6 +134,23 @@ func (s *ApiServer) Start() {
s.collectMinerCharts(login, miner["currentHashrate"].(int64), miner["hashrate"].(int64), miner["workersOnline"].(int64)) s.collectMinerCharts(login, miner["currentHashrate"].(int64), miner["hashrate"].(int64), miner["workersOnline"].(int64))
} }
}) })
c.AddFunc("0 0 */1 * *", func() {
// Delete old miner data
err := s.backend.DeleteOldMinerData()
if err != nil {
log.Println("Error deleting old miner data:", err)
}
})
c.AddFunc("0 0 */1 * *", func() {
// Delete old share data
err := s.backend.DeleteOldShareData()
if err != nil {
log.Println("Error deleting old share data:", err)
}
})
///test share chart ///test share chart
shareCharts := s.config.ShareCharts shareCharts := s.config.ShareCharts
log.Printf("Share charts config is :%v", shareCharts) log.Printf("Share charts config is :%v", shareCharts)
@ -441,10 +458,6 @@ func (s *ApiServer) AccountIndex(w http.ResponseWriter, r *http.Request) {
stats["pageSize"] = s.config.Payments stats["pageSize"] = s.config.Payments
stats["exchangedata"] = generalstats["exchangedata"] stats["exchangedata"] = generalstats["exchangedata"]
stats["minerCharts"], err = s.backend.GetMinerCharts(s.config.MinerChartsNum, login) stats["minerCharts"], err = s.backend.GetMinerCharts(s.config.MinerChartsNum, login)
// Aufruf mit Löschoperation (alle Einträge, die älter als 24 Stunden sind, werden gelöscht)
deleteCount := int64(0)
stats["minerCharts"], err = s.backend.GetMinerCharts(s.config.MinerChartsNum, login, deleteCount)
stats["shareCharts"], err = s.backend.GetShareCharts(s.config.ShareChartsNum, login) stats["shareCharts"], err = s.backend.GetShareCharts(s.config.ShareChartsNum, login)
stats["paymentCharts"], err = s.backend.GetPaymentCharts(login) stats["paymentCharts"], err = s.backend.GetPaymentCharts(login)
reply = &Entry{stats: stats, updatedAt: now} reply = &Entry{stats: stats, updatedAt: now}

62
storage/redis.go

@ -436,29 +436,69 @@ func (r *RedisClient) GetAllMinerAccount() (account []string, err error) {
return account, nil return account, nil
} }
func (r *RedisClient) GetMinerCharts(hashNum int64, login string, args ...int64) (stats []*MinerCharts, err error) { func (r *RedisClient) GetMinerCharts(hashNum int64, login string) (stats []*MinerCharts, err error) {
tx := r.client.Multi() tx := r.client.Multi()
defer tx.Close() defer tx.Close()
now := util.MakeTimestamp() / 1000 now := util.MakeTimestamp() / 1000
cmds, err := tx.Exec(func() error { cmds, err := tx.Exec(func() error {
if len(args) > 0 && args[0] >= 0 { tx.ZRemRangeByScore(r.formatKey("charts", "miner", login), "-inf", fmt.Sprint("(", now-172800))
deleteCount := args[0] tx.ZRevRangeWithScores(r.formatKey("charts", "miner", login), 0, hashNum)
if deleteCount == 0 {
tx.ZRemRangeByScore(r.formatKey("charts", "miner", login), "-inf", fmt.Sprint("(", now-86400))
} else {
tx.ZRemRangeByRank(r.formatKey("charts", "miner", login), 0, deleteCount-1)
}
}
tx.ZRevRangeWithScores(r.formatKey("charts", "miner", login), 0, hashNum-1)
return nil return nil
}) })
if err != nil { if err != nil {
return nil, err return nil, err
} }
stats = convertMinerChartsResults(cmds[len(cmds)-1].(*redis.ZSliceCmd)) stats = convertMinerChartsResults(cmds[1].(*redis.ZSliceCmd))
return stats, nil return stats, nil
} }
// DeleteOldMinerData deletes old miner data from the "miner" ZSets.
// All entries that are older than 24 hours are removed.
func (r *RedisClient) DeleteOldMinerData() error {
now := time.Now()
pastTime := now.Add(-24 * time.Hour)
// Retrieve all keys matching the pattern "charts:miner:*"
loginKeys, err := r.client.Keys(r.formatKey("charts", "miner", "*")).Result()
if err != nil {
return err
}
// Iterate through all found keys and remove the old entries
for _, loginKey := range loginKeys {
_, err := r.client.ZRemRangeByScore(loginKey, "-inf", fmt.Sprintf("(%d", pastTime.Unix())).Result()
if err != nil {
return err
}
}
return nil
}
// DeleteOldShareData deletes old share data from the "share" ZSets.
// All entries that are older than 24 hours are removed.
func (r *RedisClient) DeleteOldShareData() error {
now := time.Now()
pastTime := now.Add(-24 * time.Hour)
// Retrieve all keys matching the pattern "charts:share:*"
shareKeys, err := r.client.Keys(r.formatKey("charts", "share", "*")).Result()
if err != nil {
return err
}
// Iterate through all found keys and remove the old entries
for _, shareKey := range shareKeys {
_, err := r.client.ZRemRangeByScore(shareKey, "-inf", fmt.Sprintf("(%d", pastTime.Unix())).Result()
if err != nil {
return err
}
}
return nil
}
func (r *RedisClient) GetShareCharts(shareNum int64, login string) (stats []*ShareCharts, err error) { func (r *RedisClient) GetShareCharts(shareNum int64, login string) (stats []*ShareCharts, err error) {
tx := r.client.Multi() tx := r.client.Multi()

Loading…
Cancel
Save