redis的基本数据类型为:
- string
- list
- set
- hash
- zset
zset数据类型(sorted sets 有序集合)
zset的命令都以"z"开头:
zadd <zset> [XX/NX] <score> <member>... #向有序集合zset中添加成员:
#当添加XX选项时,表示只更新成员,不添加新成员;
#当添加NX选项时,表示不更新成员,只添加新成员;
zrange <zset> <start> <end> [WITHSCORES] #获取zset中指定范围内的闭区间成员,返回值以score升序排序
#当添加WITHSCORES选项时,表示同时返回指定范围内的成员和score
zrangebyscore <zset> <min> <max> [WITHSCORES] #获取zset中指定范围内的闭区间成员,返回值以score升序排序
#min和max可写为-inf和+inf,表示获取zset中以score升序排序的全部成员
#当min和max前面加上(,代表开区间
#例: zrangebyscore zset (1 (5 => 1 < score < 5
zrevrange <zset> <start> <end> [WITHSCORES] #获取zset中指定范围内的闭区间成员,返回值以score降序排序
zrevrangebyscore <zset> <max> <min> [WITHSCORES] #获取zset中指定范围内的闭区间成员,返回值以score降序排序
zrem <zset> <member>... #移除zset中指定的成员,返回移除的成员个数
zcard <zset> #获取zset中成员个数
zcount <zset> <min> <max> #获取zset中指定闭区间范围内的成员个数
zrank <zset> <member> #获取zset中指定成员member的排名,排名从0开始
#交集、并集
zinterstore <zset> <setnums> <zset1> <zset2>... [WEIGHTS weight] [SUM|MIN|MAX]
#获取给定的setnums个zset1、zset2等集合的交集放入zset中
#setnums参数写给定集合的个数
#[WEIGHTS weight]选项:为每个给定集合指定一个乘法因子,每个给定集合成员的score值在传递给聚合函数之前都要先乘以该因子。
#如果WEIGHTS没有给定,默认就是1。
#[SUM|MIN|MAX] 选项:指定并集的结果集的聚合方式。
#默认参数为sum可不写,将所有集合中某个成员的score值之和作为结果集中该成员的score值。
#如果使用参数MIN或者MAX,结果集就是所有集合中元素最小或最大的元素。
例:
redis> ZADD zset1 1 "one"
(integer) 1
redis> ZADD zset1 2 "two"
(integer) 1
redis> ZADD zset2 1 "one"
(integer) 1
redis> ZADD zset2 2 "two"
(integer) 1
redis> ZADD zset2 3 "three"
(integer) 1
redis> ZINTERSTORE out 2 zset1 zset2 WEIGHTS 2 3
(integer) 2
redis> ZRANGE out 0 -1 WITHSCORES
1) "one"
2) "5"
3) "two"
4) "10"
zunionstore <zset> <setnums> <zset1> <zset2>... [WEIGHTS weight] [SUM|MIN|MAX]
#获取给定的setnums个zset1、zset2等集合的并集放入zset中
例:
redis> ZADD zset1 1 "one"
(integer) 1
redis> ZADD zset1 2 "two"
(integer) 1
redis> ZADD zset2 1 "one"
(integer) 1
redis> ZADD zset2 2 "two"
(integer) 1
redis> ZADD zset2 3 "three"
(integer) 1
redis> ZUNIONSTORE out 2 zset1 zset2 WEIGHTS 2 3
(integer) 3
redis> ZRANGE out 0 -1 WITHSCORES
1) "one"
2) "5"
3) "three"
4) "9"
5) "two"
6) "10"