Redis学习笔记(七)——Redis常用命令入门——有序集合类型

六、有序集合类型

上节我们一起学习了集合类型,感受到了redis的强大。现在我们接着学Redis的最后一个类型——有序集合类型。

有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序而已。Redis中的有序集合类型,实际上实在集合类型上,为每个元素都关联一个分数,有序实际上说的是分数有序,我们根据分数的范围获取集合及其他操作。集合的元素依然是不能够相同的,但是分数可以相同。

下面列举有序金额和类型和列表类型的相似处:

①两者都是有序的(废话!)

②两者都可以获得某一范围的元素

下面列举区别:

①列表是链表实现的,靠近两边的数据读取极快,而元素过多后获取中间元素的速度则会很慢;有序集合类型使用的散列表和跳跃表(Skip list)实现的,所以读取哪部分的数据都差不多(时间复杂度是O(logN))。

②列表中不能简单的调整元素的位置,但是有序集合可以(通过改变分数)。

③有序集合比列表费内存(要存储分数、散列、跳跃表)。

下面我们来一起学习命令(这里参数关键字都比较多,所以下面开始列举的命令,关键字都使用大写)。

1、增加元素

ZADD命令是向集合中增加元素的命令,往集合中增加分数为score的member,这里也是可以一次增加多个值,返回值是成功增加的元素的个数,如果member存在,则score会覆盖原有的分数。

我们发现Peter的分数录入错了,需要修改为76分,这时候我们接着执行下面的命令。

这里分数不仅仅支持整数,还支持浮点数。

其中+inf和-inf是正负无穷的意思。

2、获得元素的分数

3、获得排名在某个范围的元素列表

ZRANGE命令会按照元素分数的从小到大顺序返回索引从start到stop之间所有的元素(包含两端)。ZRANGE与LRANGE命令相似,索引从0开始,负数一样代表从后向前查找(-1是最后一个)。WITHSCORE代表是否加上分数。

ZRANGE命令的时间复杂度为O(longN+m),其中n为有序集合的基数,m为返回的元素个数。如果遇到分数相同的情况,Redis会按照字典顺序(即"0"<...<"9"<"A"<...<"Z"<"a"<...<"z"这样的顺序)进行排列。如果是中文,也会按照编码之后的字典顺序排序。

ZREVRANGE命令和ZRANGE命令唯一不同的是ZREVRANGE命令是按照分数从大到小给出顺序结果。

4、获得指定分数范围的元素

这个命令参数很多,但是都很好理解。这个命令用来获取指定分数范围的元素,min是最小值,max是最大值,WITHSCORE还是和上面介绍的一样,LIMIT是为了指定偏移量及数量的,和sql的有点像。offset是偏移量,count是数量。同时这些min和max都是包含的,如果要想不包含,需要使用“(”符号。

5、增加某个元素的分数

这个命令可以增加一个元素的分数,返回值是更改后的分数。这里就不再赘述用法了,和INCRBY命令类似。同样如果不存在会初始为0在增加,负数即是减小。

6、获得集合中元素的数量

这个命令和SCARD类似,也就不多说了。

7、获得指定分数范围的元素个数

这里就是获得min和max分数之间的元素数,当然这里也支持“(”符号。

8、删除一个或多个元素

返回值是成功删除的元素的个数。

9、按照排名范围删除元素

这个命令按照元素分数从小到大顺序删除指定范围内所有的元素(其实就是先排序,然后按照排好的序列的索引删除),并返回删除的元素的数量。

10、按照分数范围删除元素

这里就是直接删除分数范围的元素了,这里分数同样支持“(”符号,返回删除数量。

11、获得元素的排名

ZRANK命令按照元素分数的从小到大的顺序获得制定元素的排名(第一个从0开始),ZREVRANK则相反。

 

最后我们举个实际应用的例子。

我们把wordpress的文章按点击率排序,关系数据库我们是遍历所有的文章排序点击数,如果使用Redis,我们需要一个posts:page.view键的有序集合类型,然后每个member为文章ID,score为文章的点击量。这样我们就可以用ZREVRANGE命令获取点击量排行榜。

还有一个实际的例子,我们用有序集合类型保存文章的发布时间(时间用UNIX时间及时间的毫秒数)与文章ID,这样我们可以很方便的按时间来查看文章列表,我们的文章列表应该是用文章发布时间排序而不应该用文章ID排序的。

到这里所有的数据类型就都介绍完了。大家学的怎么样了呢?

本文原创于本人个人博客,更多请访问 http://irfen.me

©原创文章,转载请注明来源: 赵伊凡's Blog
©本文链接地址: Redis学习笔记(七)——Redis常用命令入门——有序集合类型

“Redis学习笔记(七)——Redis常用命令入门——有序集合类型”的144个回复

  1. Pingback: pay day loan
  2. Pingback: Blue Coaster33
  3. Pingback: free movie downloads
  4. Pingback: free movie downloads
  5. Pingback: watch movies online
  6. Pingback: tv packages
  7. Pingback: TV for Businesses
  8. Pingback: car parking
  9. Pingback: mp4 mobile porn
  10. Pingback: lan penge her og nu
  11. Pingback: lan nu
  12. Pingback: water ionizers
  13. Pingback: water ionizer loans
  14. Pingback: car parking
  15. Pingback: alkaline water brands
  16. Pingback: b&q electrician tools
  17. Pingback: locksmith i am co
  18. Pingback: plumbing snake 100 ft
  19. Pingback: house blue
  20. Pingback: grade 6 electrical
  21. Pingback: HD Coloring Pages
  22. Pingback: ionizer payment plan
  23. Pingback: loan payment plan
  24. Pingback: visit site
  25. Pingback: alkaline water
  26. Pingback: alkaline water
  27. Pingback: cheap car insurance
  28. Pingback: water ionizer
  29. Pingback: right here
  30. Pingback: over here
  31. Pingback: best goood life xxz1
  32. Pingback: Seks v zenskoi turme
  33. Pingback: SOCKS-5-Proxy-list
  34. Pingback: softportal911.pp.ua
  35. Pingback: dayting
  36. Pingback: weather in iceland
  37. Pingback: manastirski_chay
  38. Pingback: smotretonline
  39. Pingback: psyholog
  40. Pingback: LNR DNR NEWS
  41. Pingback: online
  42. Pingback: LNR DNR NEWS LAST
  43. Pingback: video me rt follow
  44. Pingback: news lugansk lnr dnr
  45. Pingback: necessary-gifts.ru
  46. Pingback: craftor.ru
  47. Pingback: chay-monas pdf ua
  48. Pingback: news lnr
  49. Pingback: news lnr dnr
  50. Pingback: The Revenant online
  51. Pingback: prom pol kiev ukraine
  52. Pingback: LNR DNR
  53. Pingback: songmerte
  54. Pingback: dedpul 2016
  55. Pingback: dedpul-online-2016
  56. Pingback: zveropoliswatchonline
  57. Pingback: èìÿ áëîãà
  58. Pingback: 042016
  59. Pingback: 04012016
  60. Pingback: my blog gp 2016
  61. Pingback: rialudi
  62. Pingback: zootopia 2016
  63. Pingback: more
  64. Pingback: film
  65. Pingback: helou zis me
  66. Pingback: helou zis me
  67. Pingback: clic here
  68. Pingback: clic
  69. Pingback: illuziaobmana
  70. Pingback: HDKINOONLINE
  71. Pingback: hqporn2016
  72. Pingback: sunnyleone
  73. Pingback: sunnyleonelatest
  74. Pingback: toilehtml
  75. Pingback: tubepatrolporn
  76. Pingback: kinoklub
  77. Pingback: drama2016

发表评论

电子邮件地址不会被公开。 必填项已用*标注