读书人

3.redis 排序

发布时间: 2013-03-26 09:54:34 作者: rapoo

三.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

读书人网 >软件架构设计

热点推荐