♻️ Commands that specify keyslots should not try to hash for keyslot location

This commit is contained in:
Jake Gregg 2019-01-31 15:47:13 -08:00
parent 0e69501b5a
commit dba9cb31f5
2 changed files with 10 additions and 2 deletions

View File

@ -767,8 +767,11 @@ func cmdSlot(cmd Cmder, pos int) int {
if pos == 0 { if pos == 0 {
return hashtag.RandomSlot() return hashtag.RandomSlot()
} }
firstKey := cmd.stringArg(pos) val, ok := cmd.Args()[pos].(int)
return hashtag.Slot(firstKey) if ok {
return val
}
return hashtag.Slot(cmd.stringArg(pos))
} }
func (c *ClusterClient) cmdSlot(cmd Cmder) int { func (c *ClusterClient) cmdSlot(cmd Cmder) int {

View File

@ -74,6 +74,11 @@ func cmdString(cmd Cmder, val interface{}) string {
func cmdFirstKeyPos(cmd Cmder, info *CommandInfo) int { func cmdFirstKeyPos(cmd Cmder, info *CommandInfo) int {
switch cmd.Name() { switch cmd.Name() {
case "cluster":
switch cmd.stringArg(1) {
case "getkeysinslot":
return 2
}
case "eval", "evalsha": case "eval", "evalsha":
if cmd.stringArg(2) != "0" { if cmd.stringArg(2) != "0" {
return 3 return 3