当前位置:操作系统 > Unix/Linux >>

Redis系列-存储篇sorted set主要操作函数小结

Redis系列-存储篇sorted set主要操作函数小结
 
redis支持有序集合,即sorted set。sorted set在set的基础上,增加了排序属性,是set的升级版。这里简要谈谈sorted set的常用函数:
1)insert  www.zzzyk.com  
a)  zadd
语法:zadd key score member [[score member] [score member] ...]
解释:增加一个或多个member【根据score排序】到有序集key中,如果member已经存在,只更新score。返回增加member个数,不包含已经存在的member
[plain] 
[root@xsf001 ~]# redis-cli   
redis 127.0.0.1:6379> ZADD score 230 zhangsan  
(integer) 1  
redis 127.0.0.1:6379> zadd score 240 lisi 250 wangwu  
(integer) 2  
redis 127.0.0.1:6379> zadd score 100 liuli  
redis 127.0.0.1:6379> zadd score 249 wangwu  
(integer) 0  
 
              注意:有些redis版本,只能一次添加一个member
 
2)select
a)zrange
语法:zrange key start stop [withscores]
解释:返回有续集key中指定范围【通过索引 start stop】的member[及其score];
[plain] 
redis 127.0.0.1:6379> zrange score 0 -1  #所有元素  
1) "liuli"  
2) "zhangsan"  
3) "lisi"  
4) "wangwu"  
redis 127.0.0.1:6379> zrange score 0 -1 withscores  #所有member及score  
1) "liuli"  
2) "100"  
3) "zhangsan"  
4) "230"  
5) "lisi"  
6) "240"  
7) "wangwu"  
8) "249"  
redis 127.0.0.1:6379> zrange score 0 2 withscores  #前三个元素  
1) "liuli"  
2) "100"  
3) "zhangsan"  
4) "230"  
5) "lisi"  
6) "240"  
redis 127.0.0.1:6379> zrange score 0 -2  #第一个元素到  
1) "liuli"  
2) "zhangsan"  
3) "lisi"  
 
注意:0,表示第一个元素,-1 表示最后一个元素,-2 表示倒数第二个元素
b)zcount
         语法:zcount key min max
解释:统计key中score值介于min 和max之间的member个数
[plain] 
redis 127.0.0.1:6379> zrange score 0 -1 withscores  
1) "liuli"  
2) "100"  
3) "zhangsan"  
4) "230"  
5) "lisi"  
6) "240"  
7) "wangwu"  
8) "249"  
redis 127.0.0.1:6379> zcount score 230 240  # count(score >=230 && score <=240)  
(integer) 2  
 c) zscore
语法:zscore key member
解释:返回有续集key中member的score
[plain] 
redis 127.0.0.1:6379> zscore score liuli  
"100"  
 
d)zrevrange
语法:zrevrange key start stop [withscores]
解释:返回有续集key中指定范围[通过索引start stop]的member[及score],返回member根据score按降序排列
[plain] 
redis 127.0.0.1:6379> zrevrange score 0 -1 withscores  
1) "wangwu"  
2) "249"  
3) "lisi"  
4) "240"  
5) "zhangsan"  
6) "230"  
7) "liuli"  
8) "100"  
redis 127.0.0.1:6379> zrevrange score 1 -2  
1) "lisi"  
2) "zhangsan"  
 
注意:索引0 表示第一个元素,-1 最后一个元素,-2 倒数第二个元素;依次类推
e)zrangebyscore
语法:zrangebyscore key min max [withscores] [limit offset count]
解释:返回有续集key中,score大于等于min并且小于等于max的member。返回结果按照score递增的次序排列。可选withscores决定返回结果集中仅仅返回member还是返回member和score;可选参数limit 指定返回结果的数量区间。
[plain] 
redis 127.0.0.1:6379> zrangebyscore score 100 10000 withscores  
1) "liuli"  
2) "100"  
3) "zhangsan"  
4) "230"  
5) "lisi"  
6) "240"  
7) "wangwu"  
8) "249"  
redis 127.0.0.1:6379> zrangebyscore score 100 10000  limit 1 3  
1) "zhangsan"  
2) "lisi"  
3) "wangwu"  
 
f)zrevrangebyscore
语法:zrevrangescore key max min [withscores] [limit offset count]
解释:返回有续集key中score<=max并且score>=min 的元素,返回结果根据score从大到小顺序排列。可选参数withscores决定结果集中是否包含score,可选参数limit 指定返回结果集范围。
[plain] 
redis 127.0.0.1:6379> zrevrangebyscore score 0 10000  
(empty list or set)  
redis 127.0.0.1:6379> zrevrangebyscore score 10000 0  
1) "wangwu"  
2) "lisi"  
3) "zhangsan"  
4) "liuli"  
redis 127.0.0.1:6379> zrevrangebyscore score 10000 0 withscores limit 0, 2  
1) "wangwu"  
2) "249"  
3) "lisi"  
4) "240"  
 
注意:max在min之前
g)zrank
语法:zrank key member
解释:根据score从低到高,返回member在有续集中的index
[plain] 
redis 127.0.0.1:6379> zrange score 0 -1  
1) "liuli"  
2) "zhangsan"  
3) "lisi"  
4) "wangwu"  
redis 127.0.0.1:6379> zrank score liuli  
(integer) 0  
redis 127.0.0.1:6379> zrank score wangwu  
(integer) 3  
 
h)zrevrank
语法:zrevrank key member
解释:根据score从高到低排序,返回member在有序集key中的index
[plain] 
redis 127.0.0.1:6379> zrange score 0 -1  
1) "liuli"  
2) "zhangsan"  
3) "lisi"  
4) "wangwu"  
redis 127.0.0.1:6379> zrevrank score liuli  
(integer) 3  
redis 127.0.0.1:6379> zrevrank score wangwu  
(integer) 0  
 i)zcard
语法:zcard key
解释:返回有续集key的基数
[plain] 
redis 127.0.0.1:6379> zcard score  
(integer) 4  
redis 127.0.0.1:6379> zcard stdu  #有续集不存在返回0  
(integer) 0  
 
3)update
a)zincrby
语法:zincrby key increment member
解释:有续集key的member增加增量increment,返回增加后的score
[plain] 
redis 127.0.0.1:6379> zscore score liuli  
"100"  
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,