mirror of
https://github.com/tiny-craft/tiny-rdm.git
synced 2025-10-16 20:20:51 +08:00
feat: add multiple check mode for keys
perf: add multiple keys deletion and progress indicator
This commit is contained in:
@@ -291,9 +291,7 @@ func (b *browserService) getRedisClient(connName string, db int) (item connectio
|
||||
if db >= 0 {
|
||||
var rdb *redis.Client
|
||||
if rdb, ok = client.(*redis.Client); ok && rdb != nil {
|
||||
if err = rdb.Do(item.ctx, "select", strconv.Itoa(db)).Err(); err != nil {
|
||||
return
|
||||
}
|
||||
_ = rdb.Do(item.ctx, "select", strconv.Itoa(db)).Err()
|
||||
}
|
||||
}
|
||||
return
|
||||
@@ -1772,8 +1770,8 @@ func (b *browserService) SetKeyTTL(connName string, db int, k any, ttl int64) (r
|
||||
}
|
||||
|
||||
// DeleteKey remove redis key
|
||||
func (b *browserService) DeleteKey(connName string, db int, k any, async bool) (resp types.JSResp) {
|
||||
item, err := b.getRedisClient(connName, db)
|
||||
func (b *browserService) DeleteKey(server string, db int, k any, async bool) (resp types.JSResp) {
|
||||
item, err := b.getRedisClient(server, db)
|
||||
if err != nil {
|
||||
resp.Msg = err.Error()
|
||||
return
|
||||
@@ -1862,6 +1860,34 @@ func (b *browserService) DeleteKey(connName string, db int, k any, async bool) (
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteOneKey delete one key
|
||||
func (b *browserService) DeleteOneKey(server string, db int, k any) (resp types.JSResp) {
|
||||
item, err := b.getRedisClient(server, db)
|
||||
if err != nil {
|
||||
resp.Msg = err.Error()
|
||||
return
|
||||
}
|
||||
|
||||
client, ctx := item.client, item.ctx
|
||||
key := strutil.DecodeRedisKey(k)
|
||||
if cluster, ok := client.(*redis.ClusterClient); ok {
|
||||
// cluster mode
|
||||
err = cluster.ForEachMaster(ctx, func(ctx context.Context, cli *redis.Client) error {
|
||||
return cli.Del(ctx, key).Err()
|
||||
})
|
||||
} else {
|
||||
err = client.Del(ctx, key).Err()
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
resp.Msg = err.Error()
|
||||
return
|
||||
}
|
||||
|
||||
resp.Success = true
|
||||
return
|
||||
}
|
||||
|
||||
// FlushDB flush database
|
||||
func (b *browserService) FlushDB(connName string, db int, async bool) (resp types.JSResp) {
|
||||
item, err := b.getRedisClient(connName, db)
|
||||
|
Reference in New Issue
Block a user