From 38c06fa037dbb49b6e7c28df5b1fb566d504ba61 Mon Sep 17 00:00:00 2001 From: antirez Date: Wed, 7 Dec 2011 11:34:25 +0100 Subject: [PATCH] List type AOF rewrite using variadic RPUSH for the linked list encoding. --- src/aof.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/aof.c b/src/aof.c index d43c7413..74a8a7ec 100644 --- a/src/aof.c +++ b/src/aof.c @@ -460,10 +460,16 @@ int rewriteListObject(rio *r, robj *key, robj *o) { while((ln = listNext(&li))) { robj *eleobj = listNodeValue(ln); - if (rioWriteBulkCount(r,'*',3) == 0) return 0; - if (rioWriteBulkString(r,"RPUSH",5) == 0) return 0; - if (rioWriteBulkObject(r,key) == 0) return 0; + if (count == 0) { + int cmd_items = (items > REDIS_AOFREWRITE_ITEMS_PER_CMD) ? + REDIS_AOFREWRITE_ITEMS_PER_CMD : items; + if (rioWriteBulkCount(r,'*',2+cmd_items) == 0) return 0; + if (rioWriteBulkString(r,"RPUSH",5) == 0) return 0; + if (rioWriteBulkObject(r,key) == 0) return 0; + } if (rioWriteBulkObject(r,eleobj) == 0) return 0; + if (++count == REDIS_AOFREWRITE_ITEMS_PER_CMD) count = 0; + items--; } } else { redisPanic("Unknown list encoding");