首页 > 代码库 > [redis数据结构] 之 zset(有序集合)

[redis数据结构] 之 zset(有序集合)

    上一篇讲述了无序set集合的使用命令,本文将讲述zset(有序集合)的使用命令以及实例。zset的一个元素由权重和值构成,权重表示的是位置,也就是有序的来由。

    1、如果添加一个有序集合元素

语法:zadd [zset集合] [权重(数值类型)] [元素值]# 默认是权重由小到大排列

 范例:

  wKioL1QL1QPy3yVZAAGXIfsMlwc523.jpg

  阐述:在无序集合中,sadd一个已经存在的元素,是不存添加成功的;虽然在zset中添加一个已经存在的元素也无法添加,但是会可以修改其新设置的元素权重。

  例如:

  wKiom1QL127haxyXAAD3c_MzIXk277.jpg

  2、如果删除一个元素

 语法:zrem [zset集合]

  范例:

      wKiom1QL1q2goWWeAAAwEFt25cY401.jpg

  3、遍历有序集合

# 权重从小到大排列遍历
语法1:zrange [zset集合] [开始索引] [结束索引] <withscores>

# 权重从大到小排列遍历
语法2:zrevrange [zset集合] [开始索引] [结束索引] <withscores>

 范例:

 wKioL1QL2IPgjiWYAAD_gDcrVyA783.jpg

 阐述:语法包含withscores是表示显示权重。

  4、自增/自减元素权重

语法:zincrby [zset集合] [步长] [元素] # 返回元素的权重
描述:如果元素不存在,那么添加元素,并设置权重为指定步长,否则修改元素的权重为自增或自减的结果。

 范例:修改51cto2元素的权重为7

 wKioL1QL2d6z4bxNAADLpSUFrLI503.jpg

 

  5、获取元素的索引位置

# 按照权重升序取索引(从小到大)
语法1:zrank [zset集合] [元素] # 获取指定元素的索引位置

# 按照权重降序取索引(从大到小)
语法2:zrevrank [zset集合] [元素]

 范例:分别按照降序和升序去出51cto2元素的索引值(索引是从0开始的)

 wKiom1QL2vPSEUTgAAE3yXYpo9A483.jpg

  6、获取某个权重区间的元素列表

语法:zrangebyscore [zset集合] [起始权重] [结束权重] <withscores>
描述:获取某个权重区间的元素,withscores选项与zrange一致

 范例:获取权重3,4之间的元素

 wKiom1QL3DGSrJhYAAFbkWNIe1o790.jpg

  7、获取某个权重区间的元素个数

语法:zcount [zset集合] [起始权重] [结束权重] # 返回元素个数

 范例:获取权重3到4之间的元素个数

 wKiom1QL3TWAv8ZQAADiKltuSaA038.jpg

  8、获取指定元素的权重

语法:zscore [zset集合] [元素] # 返回元素的权重数值

 范例:获取51cto2的权重

 wKioL1QL7Y2xbyfLAAAwf50SdQ8462.jpg

  9、获取集合大小

语法:zcard [zset集合] # 返回集合元素大小

 范例:获取set1集合的元素个数

 wKiom1QL7ZPgJtNFAABENov7rmg105.jpg

  10、批量删除

# 按照索引位置批量删除
语法1:zremrangebyrank [zset集合] [开始索引] [结束索引] 

# 按照权重区间批量删除
语法2: zremrangebyscore [zset集合] [开始索引] [结束索引]

 范例:

 wKioL1QL8FCA3gU_AAJBi1gc5mk246.jpg

                            

本文出自 “java程序冥” 博客,请务必保留此出处http://793404905.blog.51cto.com/6179428/1549770

[redis数据结构] 之 zset(有序集合)