首页 > Redis设计与实现读书笔记(21-23章)
头像
牛客6362853号
发布于 2018-10-30 11:24
+ 关注

Redis设计与实现读书笔记(21-23章)

Redis设计与实现读书笔记(21-23章)

第21章:排序
SORT命令通过将被排序键包含的元素载入到数组里面,然后对数组进行排序来完成对键进行排序的工作。
在默认情况下,SORT命令假设被排序键包含的都是数字值,并且以数字值的方式来进行排序。
如果SORT命令使用了ALPHA选项,那么SORT命令假设被排序键包含的都是字符串值,并且以字符串的方式来进行排序。
SORT命令的排序操作有快速排序算法实现。
SORT命令会根据用户是否使用了DESC选项来决定是使用升序对比还是降序对比来比较被排序的元素,升序对比会产生升序排序结果,被排序的元素按值的大小从小到大排列,降序对比会产生降序排列结果,被排序的元素按值的大小从大到小排列。
当SORT命令使用了BY选项时,命令使用其他键的值作为权重来进行排序操作。
当SORT命令使用了LIMIT选项时,命令只保留排序结果集中LIMIT选项指定的元素。
当SORT命令使用了GET选项时,命令会根据排序结果集中的元素,以及GET选项给定的模式,查找并返回其他键的值,而不是返回被排序的元素。
当SORT命令使用了STORE选项时,命令会将排序结果集保存到指定的键里面。
除了GET选项之外,调整选项的摆放位置不会影响SORT命令的排序结果。
第22章:二进制位数组
Redis使用SDS来保存位数组。
SDS使用逆序来保存位数组,这种保存顺序简化了SETBIT命令的实现,使得SETBIT命令可以在不移动现有二进制位的情况下,对位数组进行空间扩展。
BITCOUNT命令使用了查表算法和variable-precision SWAR算法来优化命令的执行效率。
BITOP命令的所有操作都使用C语言内置的位操作来实现。
第23章:慢查询日志
客户端可以通过执行MONITOR命令,将客户端转换为监视器,接收并打印服务器处理的每个命令请求的相关信息。
当一个客户端从普通客户端变为监视器时,该客户端的REDIS_MONITOR标识会被打开。
服务器将所有监视器都记录在monitors链表中。
每次处理命令请求时,服务器都会遍历monitors链表,将相关信息发送给监视器。

全部评论

(0) 回帖
加载中...
话题 回帖

近期热帖

热门推荐