Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
1cd92e7f
Commit
1cd92e7f
authored
May 31, 2010
by
Pieter Noordhuis
Browse files
function to create a new ziplist encoded list
parent
23f96494
Changes
1
Hide whitespace changes
Inline
Side-by-side
redis.c
View file @
1cd92e7f
...
@@ -2984,9 +2984,17 @@ static robj *dupStringObject(robj *o) {
...
@@ -2984,9 +2984,17 @@ static robj *dupStringObject(robj *o) {
static robj *createListObject(void) {
static robj *createListObject(void) {
list *l = listCreate();
list *l = listCreate();
robj *o = createObject(REDIS_LIST,l);
listSetFreeMethod(l,decrRefCount);
listSetFreeMethod(l,decrRefCount);
return
createObject
(
REDIS_LIST
,
l
);
o->encoding = REDIS_ENCODING_LIST;
return o;
}
static robj *createZiplistObject(void) {
unsigned char *zl = ziplistNew();
robj *o = createObject(REDIS_LIST,zl);
o->encoding = REDIS_ENCODING_ZIPLIST;
return o;
}
}
static robj *createSetObject(void) {
static robj *createSetObject(void) {
...
@@ -4031,8 +4039,7 @@ static robj *rdbLoadObject(int type, FILE *fp) {
...
@@ -4031,8 +4039,7 @@ static robj *rdbLoadObject(int type, FILE *fp) {
/* Read list value */
/* Read list value */
if ((len = rdbLoadLen(fp,NULL)) == REDIS_RDB_LENERR) return NULL;
if ((len = rdbLoadLen(fp,NULL)) == REDIS_RDB_LENERR) return NULL;
o
=
createObject
(
REDIS_LIST
,
ziplistNew
());
o = createZiplistObject();
o
->
encoding
=
REDIS_ENCODING_ZIPLIST
;
/* Load every single element of the list */
/* Load every single element of the list */
while(len--) {
while(len--) {
...
@@ -5004,8 +5011,7 @@ static void pushGenericCommand(redisClient *c, int where) {
...
@@ -5004,8 +5011,7 @@ static void pushGenericCommand(redisClient *c, int where) {
addReply(c,shared.cone);
addReply(c,shared.cone);
return;
return;
}
}
lobj
=
createObject
(
REDIS_LIST
,
ziplistNew
());
lobj = createZiplistObject();
lobj
->
encoding
=
REDIS_ENCODING_ZIPLIST
;
dictAdd(c->db->dict,c->argv[1],lobj);
dictAdd(c->db->dict,c->argv[1],lobj);
incrRefCount(c->argv[1]);
incrRefCount(c->argv[1]);
} else {
} else {
...
@@ -5293,8 +5299,7 @@ static void rpoplpushcommand(redisClient *c) {
...
@@ -5293,8 +5299,7 @@ static void rpoplpushcommand(redisClient *c) {
if (!handleClientsWaitingListPush(c,c->argv[2],value)) {
if (!handleClientsWaitingListPush(c,c->argv[2],value)) {
/* Create the list if the key does not exist */
/* Create the list if the key does not exist */
if (!dobj) {
if (!dobj) {
dobj
=
createObject
(
REDIS_LIST
,
ziplistNew
());
dobj = createZiplistObject();
dobj
->
encoding
=
REDIS_ENCODING_ZIPLIST
;
dictAdd(c->db->dict,c->argv[2],dobj);
dictAdd(c->db->dict,c->argv[2],dobj);
incrRefCount(c->argv[2]);
incrRefCount(c->argv[2]);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment