redis-sort by

 

对某个列表(list)、集合(set)、有序集合(zset)排序的时候按照某个 参考键 进行排序,而不是按照按照这个列表、集合或有序集合本身进行排序;

被排序的键和参考键在业务上有关联(这个由业务保证)。

 

e.g. 

有一个记录文章id的列表(list),同时还有一个记录文章id及其更新时间的若干个key(哈希)

 

文章id列表

 

 

保存文章更新时间和作者的哈希key 

 

 

按照每篇文章的更新时间对文章id进行排序

 

 

排序后返回指定字段

 

 

排序后返回指定的多个字段

 

 

 

返回制定的多个字段和元素本身(文章id)

 

 

把排序结果存到某个键

sort    ids   by  post:*->time  desc   get   post:*->author   get #    STORE    idsAfterSort

 

性能优化

对有n个元素的列表进行排序,返回m个元素,其时间复杂度是O(n + mlog(m))

空间复杂度是O(n)

所以开发中使用SORT时需要注意:

(1)尽可能减少排序元素个数

(2)使用 LIMIT 参数只获取需要的数据

(3)排序数据较大时,尽可能使用STORE将结果缓存

 

posted on 2021-09-14 00:12  崔好好  阅读(139)  评论(0编辑  收藏  举报

导航