3.redis 排序
三.redis 排序??FAQ:1.sort ml by name* get name* get # 为什么会按照shi lala nihao wo的顺序排下来,这
三.redis 排序
??FAQ:1.sort ml by name* get name* get # 为什么会按照shi lala nihao wo的顺序排下来,这个跟单纯的排序name*和name * alpha的结果都不一样??? 这个问题要从redis的实现逻辑上来分析了??? a)list在插入后 ,默认是按照时间的先后反序排列的 , lrange ml 0 -1,结果是:13 23 11 12. 这是因为list插入时是将最新的item插入到链表头??? b)sort m1 by name* 确定是会按照name*的值进行排序的.但当name*对应的value不是num型并且没有设置alpha的时候,会导致排序分值都是相同的,因为程序将把name*对应的值尝试转换为nun型??? c)这就会导致sort ml by name*会按照ml的自然顺序进行排列了if (alpha) {if (sortby) vector[j].u.cmpobj = getDecodedObject(byval);} else {if (byval->encoding == REDIS_ENCODING_RAW) { vector[j].u.score = strtod(byval->ptr,NULL);} else if (byval->encoding == REDIS_ENCODING_INT) { /* Don't need to decode the object if it's * integer-encoded (the only encoding supported) so * far. We can just cast it */ vector[j].u.score = (long)byval->ptr;} else { redisAssert(1 != 1); } }
参考:http://www.cnblogs.com/xhan/archive/2011/02/03/1948970.htmlhttp://icej.javaeye.com/blog/517795