2017-09-11 09:19:30 +03:00
|
|
|
package redis
|
|
|
|
|
2023-09-20 16:08:24 +03:00
|
|
|
import "context"
|
|
|
|
|
|
|
|
type ClusterCmdable interface {
|
|
|
|
ClusterMyShardID(ctx context.Context) *StringCmd
|
|
|
|
ClusterSlots(ctx context.Context) *ClusterSlotsCmd
|
|
|
|
ClusterShards(ctx context.Context) *ClusterShardsCmd
|
|
|
|
ClusterLinks(ctx context.Context) *ClusterLinksCmd
|
|
|
|
ClusterNodes(ctx context.Context) *StringCmd
|
|
|
|
ClusterMeet(ctx context.Context, host, port string) *StatusCmd
|
|
|
|
ClusterForget(ctx context.Context, nodeID string) *StatusCmd
|
|
|
|
ClusterReplicate(ctx context.Context, nodeID string) *StatusCmd
|
|
|
|
ClusterResetSoft(ctx context.Context) *StatusCmd
|
|
|
|
ClusterResetHard(ctx context.Context) *StatusCmd
|
|
|
|
ClusterInfo(ctx context.Context) *StringCmd
|
|
|
|
ClusterKeySlot(ctx context.Context, key string) *IntCmd
|
|
|
|
ClusterGetKeysInSlot(ctx context.Context, slot int, count int) *StringSliceCmd
|
|
|
|
ClusterCountFailureReports(ctx context.Context, nodeID string) *IntCmd
|
|
|
|
ClusterCountKeysInSlot(ctx context.Context, slot int) *IntCmd
|
|
|
|
ClusterDelSlots(ctx context.Context, slots ...int) *StatusCmd
|
|
|
|
ClusterDelSlotsRange(ctx context.Context, min, max int) *StatusCmd
|
|
|
|
ClusterSaveConfig(ctx context.Context) *StatusCmd
|
|
|
|
ClusterSlaves(ctx context.Context, nodeID string) *StringSliceCmd
|
|
|
|
ClusterFailover(ctx context.Context) *StatusCmd
|
|
|
|
ClusterAddSlots(ctx context.Context, slots ...int) *StatusCmd
|
|
|
|
ClusterAddSlotsRange(ctx context.Context, min, max int) *StatusCmd
|
|
|
|
ReadOnly(ctx context.Context) *StatusCmd
|
|
|
|
ReadWrite(ctx context.Context) *StatusCmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterMyShardID(ctx context.Context) *StringCmd {
|
|
|
|
cmd := NewStringCmd(ctx, "cluster", "myshardid")
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterSlots(ctx context.Context) *ClusterSlotsCmd {
|
|
|
|
cmd := NewClusterSlotsCmd(ctx, "cluster", "slots")
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterShards(ctx context.Context) *ClusterShardsCmd {
|
|
|
|
cmd := NewClusterShardsCmd(ctx, "cluster", "shards")
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterLinks(ctx context.Context) *ClusterLinksCmd {
|
|
|
|
cmd := NewClusterLinksCmd(ctx, "cluster", "links")
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterNodes(ctx context.Context) *StringCmd {
|
|
|
|
cmd := NewStringCmd(ctx, "cluster", "nodes")
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterMeet(ctx context.Context, host, port string) *StatusCmd {
|
|
|
|
cmd := NewStatusCmd(ctx, "cluster", "meet", host, port)
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterForget(ctx context.Context, nodeID string) *StatusCmd {
|
|
|
|
cmd := NewStatusCmd(ctx, "cluster", "forget", nodeID)
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterReplicate(ctx context.Context, nodeID string) *StatusCmd {
|
|
|
|
cmd := NewStatusCmd(ctx, "cluster", "replicate", nodeID)
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterResetSoft(ctx context.Context) *StatusCmd {
|
|
|
|
cmd := NewStatusCmd(ctx, "cluster", "reset", "soft")
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterResetHard(ctx context.Context) *StatusCmd {
|
|
|
|
cmd := NewStatusCmd(ctx, "cluster", "reset", "hard")
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterInfo(ctx context.Context) *StringCmd {
|
|
|
|
cmd := NewStringCmd(ctx, "cluster", "info")
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterKeySlot(ctx context.Context, key string) *IntCmd {
|
|
|
|
cmd := NewIntCmd(ctx, "cluster", "keyslot", key)
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterGetKeysInSlot(ctx context.Context, slot int, count int) *StringSliceCmd {
|
|
|
|
cmd := NewStringSliceCmd(ctx, "cluster", "getkeysinslot", slot, count)
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterCountFailureReports(ctx context.Context, nodeID string) *IntCmd {
|
|
|
|
cmd := NewIntCmd(ctx, "cluster", "count-failure-reports", nodeID)
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterCountKeysInSlot(ctx context.Context, slot int) *IntCmd {
|
|
|
|
cmd := NewIntCmd(ctx, "cluster", "countkeysinslot", slot)
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterDelSlots(ctx context.Context, slots ...int) *StatusCmd {
|
|
|
|
args := make([]interface{}, 2+len(slots))
|
|
|
|
args[0] = "cluster"
|
|
|
|
args[1] = "delslots"
|
|
|
|
for i, slot := range slots {
|
|
|
|
args[2+i] = slot
|
2021-04-16 16:58:11 +03:00
|
|
|
}
|
2023-09-20 16:08:24 +03:00
|
|
|
cmd := NewStatusCmd(ctx, args...)
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
2021-04-16 16:58:11 +03:00
|
|
|
|
2023-09-20 16:08:24 +03:00
|
|
|
func (c cmdable) ClusterDelSlotsRange(ctx context.Context, min, max int) *StatusCmd {
|
|
|
|
size := max - min + 1
|
|
|
|
slots := make([]int, size)
|
|
|
|
for i := 0; i < size; i++ {
|
|
|
|
slots[i] = min + i
|
2021-04-16 16:58:11 +03:00
|
|
|
}
|
2023-09-20 16:08:24 +03:00
|
|
|
return c.ClusterDelSlots(ctx, slots...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterSaveConfig(ctx context.Context) *StatusCmd {
|
|
|
|
cmd := NewStatusCmd(ctx, "cluster", "saveconfig")
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterSlaves(ctx context.Context, nodeID string) *StringSliceCmd {
|
|
|
|
cmd := NewStringSliceCmd(ctx, "cluster", "slaves", nodeID)
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterFailover(ctx context.Context) *StatusCmd {
|
|
|
|
cmd := NewStatusCmd(ctx, "cluster", "failover")
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterAddSlots(ctx context.Context, slots ...int) *StatusCmd {
|
|
|
|
args := make([]interface{}, 2+len(slots))
|
|
|
|
args[0] = "cluster"
|
|
|
|
args[1] = "addslots"
|
|
|
|
for i, num := range slots {
|
|
|
|
args[2+i] = num
|
|
|
|
}
|
|
|
|
cmd := NewStatusCmd(ctx, args...)
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ClusterAddSlotsRange(ctx context.Context, min, max int) *StatusCmd {
|
|
|
|
size := max - min + 1
|
|
|
|
slots := make([]int, size)
|
|
|
|
for i := 0; i < size; i++ {
|
|
|
|
slots[i] = min + i
|
|
|
|
}
|
|
|
|
return c.ClusterAddSlots(ctx, slots...)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c cmdable) ReadOnly(ctx context.Context) *StatusCmd {
|
|
|
|
cmd := NewStatusCmd(ctx, "readonly")
|
|
|
|
_ = c(ctx, cmd)
|
|
|
|
return cmd
|
|
|
|
}
|
2021-04-16 16:58:11 +03:00
|
|
|
|
2023-09-20 16:08:24 +03:00
|
|
|
func (c cmdable) ReadWrite(ctx context.Context) *StatusCmd {
|
|
|
|
cmd := NewStatusCmd(ctx, "readwrite")
|
|
|
|
_ = c(ctx, cmd)
|
2021-04-16 16:58:11 +03:00
|
|
|
return cmd
|
|
|
|
}
|