IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

七十二、Redis SORT <key> 命令的实现

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

SORT 命令的最简单执行形式为:

SORT <key>

这个命令可以对一个包含数字值的键 key 进行排序。

以下示例展示了如何使用 SORT 命令对一个包含三个数字值的列表键进行排序:

redis> RPUSH numbers 3 1 2
(integer) 3

redis> SORT numbers
1) "1"
2) "2"
3) "3"

服务器执行 SORT numbers 命令的详细步骤如下:

1、 创建一个和 numbers 列表长度相同的数组, 该数组的每个项都是一个 redis.h/redisSortObject 结构, 如图 IMAGE_CREATE_ARRAY 所示。
2、 遍历数组, 将各个数组项的 obj 指针分别指向 numbers 列表的各个项, 构成 obj 指针和列表项之间的一对一关系, 如图 IMAGE_POINT_OBJ 所示。
3、 遍历数组, 将各个 obj 指针所指向的列表项转换成一个 double 类型的浮点数, 并将这个浮点数保存在相应数组项的 u.score 属性里面, 如图 IMAGE_SET_SCORE 所示。
4、 根据数组项 u.score 属性的值, 对数组进行数字值排序, 排序后的数组项按 u.score 属性的值从小到大排列, 如图 IMAGE_SORTED 所示。
5、 遍历数组, 将各个数组项的 obj 指针所指向的列表项作为排序结果返回给客户端: 程序首先访问数组的索引 0 , 返回 u.score 值为1.0 的列表项 "1" ; 然后访问数组的索引 1 , 返回 u.score 值为 2.0 的列表项 "2" ; 最后访问数组的索引 2 , 返回 u.score 值为3.0 的列表项 "3"

其他 SORT <key> 命令的执行步骤也和这里给出的 SORT numbers 命令的执行步骤类似。

43_1.png

43_2.png

43_3.png

43_4.png

以下是 redisSortObject 结构的完整定义:

typedef struct _redisSortObject {

    // 被排序键的值
    robj *obj;

    // 权重
    union {

        // 排序数字值时使用
        double score;

        // 排序带有 BY 选项的字符串值时使用
        robj *cmpobj;

    } u;

} redisSortObject;

SORT 命令为每个被排序的键都创建一个与键长度相同的数组, 数组的每个项都是一个 redisSortObject 结构, 根据 SORT 命令使用的选项不同, 程序使用 redisSortObject 结构的方式也不同, 稍后介绍 SORT 命令的各种选项时我们会看到这一点。

干货推荐

文章永久链接:https://tech.souyunku.com/?p=11243


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(72) 打赏



未经允许不得转载:搜云库技术团队 » 七十二、Redis SORT <key> 命令的实现

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367