Redis排序相关命令

  • 1、用sort命令进行排序
  • 2、用by参数指定排序模式
  • 3、用limit参数返回部分排序结果
  • 4、sort命令里get参数的用法
  • 5、通过store参数提升性能


  排序是数据库必备的命令,在Redis这种NoSQL数据库里可以通过本节给出的命令对列表、集合与有序集合等格式的数据进行升序或降序的排列操作。

1、用sort命令进行排序

  在sort命令里,可以通过asc参数进行升序排列操作,通过desc参数进行降序排列操作。

redis 倒序排行榜 redis数据排序_redis 倒序排行榜


  通过lpush命令向键是salary的列表(list)里插入了若干数据,随后通过sort命令对salary对象进行了升序排列。排序命令不会对列表本身的数据产生影响。使用lrange命令查看salary列表里所有索引的元素,就会发现其中元素的次序依然是插入时的次序,而不是排序后的次序。

redis 倒序排行榜 redis数据排序_redis 倒序排行榜_02

由于这里排序的对象不是数值型元素,因此要加上alpha参数

  下面演示对有序集合排序,在有序集合里,同时包含了元素本身和描述元素权重的score,而sort命令只会针对元素值进行排序。

redis 倒序排行榜 redis数据排序_redis 倒序排行榜_03

2、用by参数指定排序模式

  比如用lpush命令向vipLevel的列表里插入若干以VIP开头的数据后,如果想按VIP后面跟着的数字排序,则可以用by参数来指定排序模式。

redis 倒序排行榜 redis数据排序_memcached_04

3、用limit参数返回部分排序结果

[LIMIT offset count]

offset表示需要调过的已排序元素的个数
count表示需要返回元素的个数

redis 倒序排行榜 redis数据排序_redis_05

4、sort命令里get参数的用法

  通过sort命令里的get参数可以用排序的结果作为键,再去获取对应的值。

redis 倒序排行榜 redis数据排序_数据库_06


  如果在sort方法里加入get参数,就会把原本作为排序结果的值当作键,用这些键再去获取值,最终展示这些值的排序结果。

5、通过store参数提升性能

  对于给定的数据对象,如果经常需要用相对固定的模式进行排序,就可以用store参数来缓存结果,这样每次做相同的排序动作就不需要耗费资源从头做起了,可以从缓存中直接得到结果。

redis 倒序排行榜 redis数据排序_redis 倒序排行榜_07


  在第1行用sort命令对score进行降序排列,同时还用store参数把排序的结果保存到score-desc里,这样通过lrange就可以看到缓存结果score-desc对象中的数据。

  这样数据比较少,缓存的意义可能不明显,如果待排序的数据很多,比如十万级以上,而且会频繁用到排序后的结果,那么用store缓存结果后就能在很大程度上提升系统的性能。