diff --git a/src/redis.c b/src/redis.c index efce1f63..863c54e2 100644 --- a/src/redis.c +++ b/src/redis.c @@ -1091,8 +1091,14 @@ void createSharedObjects(void) { shared.plus = createObject(REDIS_STRING,sdsnew("+")); for (j = 0; j < REDIS_SHARED_SELECT_CMDS; j++) { + char dictid_str[64]; + int dictid_len; + + dictid_len = ll2string(dictid_str,sizeof(dictid_str),j); shared.select[j] = createObject(REDIS_STRING, - sdscatprintf(sdsempty(),"select %d\r\n", j)); + sdscatprintf(sdsempty(), + "*2\r\n$6\r\nSELECT\r\n$%d\r\n%s\r\n", + dictid_len, dictid_str)); } shared.messagebulk = createStringObject("$7\r\nmessage\r\n",13); shared.pmessagebulk = createStringObject("$8\r\npmessage\r\n",14); diff --git a/src/replication.c b/src/replication.c index ea9c0104..872cf473 100644 --- a/src/replication.c +++ b/src/replication.c @@ -61,8 +61,14 @@ void replicationFeedSlaves(list *slaves, int dictid, robj **argv, int argc) { selectcmd = shared.select[dictid]; incrRefCount(selectcmd); } else { + char dictid_str[64]; + int dictid_len; + + dictid_len = ll2string(dictid_str,sizeof(dictid_str),dictid); selectcmd = createObject(REDIS_STRING, - sdscatprintf(sdsempty(),"select %d\r\n",dictid)); + sdscatprintf(sdsempty(), + "*2\r\n$6\r\nSELECT\r\n$%d\r\n%s\r\n", + dictid_len, dictid_str)); } addReply(slave,selectcmd); decrRefCount(selectcmd);