排序是数据库必备的命令,在Redis这种NoSQL数据库里可以通过本节给出的命令对列表、集合与有序集合等格式的数据进行升序或降序的排列操作。
在sort命令里,可以通过asc参数进行升序排列操作,通过desc参数进行降序排列操作。
通过lpush
命令向键是salary的列表(list)里插入了若干数据,随后通过sort
命令对salary对象进行了升序排列。排序命令不会对列表本身的数据产生影响。使用lrange
命令查看salary列表里所有索引的元素,就会发现其中元素的次序依然是插入时的次序,而不是排序后的次序。
由于这里排序的对象不是数值型元素,因此要加上alpha参数
下面演示对有序集合排序,在有序集合里,同时包含了元素本身和描述元素权重的score,而sort
命令只会针对元素值进行排序。
比如用lpush
命令向vipLevel的列表里插入若干以VIP开头的数据后,如果想按VIP后面跟着的数字排序,则可以用by
参数来指定排序模式。
[LIMIT offset count]
offset表示需要调过的已排序元素的个数 count表示需要返回元素的个数
通过sort命令里的get参数可以用排序的结果作为键,再去获取对应的值。
如果在sort方法里加入get参数,就会把原本作为排序结果的值当作键,用这些键再去获取值,最终展示这些值的排序结果。
对于给定的数据对象,如果经常需要用相对固定的模式进行排序,就可以用store
参数来缓存结果,这样每次做相同的排序动作就不需要耗费资源从头做起了,可以从缓存中直接得到结果。
在第1行用sort命令对score进行降序排列,同时还用store参数把排序的结果保存到score-desc里,这样通过lrange就可以看到缓存结果score-desc对象中的数据。 这样数据比较少,缓存的意义可能不明显,如果待排序的数据很多,比如十万级以上,而且会频繁用到排序后的结果,那么用store缓存结果后就能在很大程度上提升系统的性能。