mirror of
https://github.com/HDT3213/godis.git
synced 2025-10-05 08:46:56 +08:00
40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
package cluster
|
|
|
|
import (
|
|
"github.com/hdt3213/godis/interface/redis"
|
|
"github.com/hdt3213/godis/redis/reply"
|
|
)
|
|
|
|
// TODO: support multiplex slots
|
|
func Rename(cluster *Cluster, c redis.Connection, args [][]byte) redis.Reply {
|
|
if len(args) != 3 {
|
|
return reply.MakeErrReply("ERR wrong number of arguments for 'rename' command")
|
|
}
|
|
src := string(args[1])
|
|
dest := string(args[2])
|
|
|
|
srcPeer := cluster.peerPicker.PickNode(src)
|
|
destPeer := cluster.peerPicker.PickNode(dest)
|
|
|
|
if srcPeer != destPeer {
|
|
return reply.MakeErrReply("ERR rename must within one slot in cluster mode")
|
|
}
|
|
return cluster.Relay(srcPeer, c, args)
|
|
}
|
|
|
|
func RenameNx(cluster *Cluster, c redis.Connection, args [][]byte) redis.Reply {
|
|
if len(args) != 3 {
|
|
return reply.MakeErrReply("ERR wrong number of arguments for 'renamenx' command")
|
|
}
|
|
src := string(args[1])
|
|
dest := string(args[2])
|
|
|
|
srcPeer := cluster.peerPicker.PickNode(src)
|
|
destPeer := cluster.peerPicker.PickNode(dest)
|
|
|
|
if srcPeer != destPeer {
|
|
return reply.MakeErrReply("ERR rename must within one slot in cluster mode")
|
|
}
|
|
return cluster.Relay(srcPeer, c, args)
|
|
}
|