Merge remote branch 'pietern/2.4-misc' into 2.4

This commit is contained in:
antirez
2011-05-05 16:50:28 +02:00
26 changed files with 1442 additions and 308 deletions

View File

@ -225,6 +225,16 @@ int checkType(redisClient *c, robj *o, int type) {
return 0;
}
int isObjectRepresentableAsLongLong(robj *o, long long *llval) {
redisAssert(o->type == REDIS_STRING);
if (o->encoding == REDIS_ENCODING_INT) {
if (llval) *llval = (long) o->ptr;
return REDIS_OK;
} else {
return string2ll(o->ptr,sdslen(o->ptr),llval) ? REDIS_OK : REDIS_ERR;
}
}
/* Try to encode a string object in order to save space */
robj *tryObjectEncoding(robj *o) {
long value;
@ -242,7 +252,7 @@ robj *tryObjectEncoding(robj *o) {
redisAssert(o->type == REDIS_STRING);
/* Check if we can represent this string as a long integer */
if (isStringRepresentableAsLong(s,&value) == REDIS_ERR) return o;
if (!string2l(s,sdslen(s),&value)) return o;
/* Ok, this object can be encoded...
*