首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

3.redis 排序

2013-03-26 
三.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

热点排行