NoSQL之Redis对zset(有序集合)数据类型的操作
2013-12-03 17:13
771 查看
一、简介
Sorted set(zset)是set的升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新得值调整顺序。可以理解为有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。
二、有序集合的操作方法
下面score是按顺序操作而rank是按索引操作
1.zadd key score member:向名称为key的zset中添加元素member,score用于排序。如果该元素存在,则更新其顺序。
127.0.0.1:6379> zadd zsetkey 1 'one'
(integer) 1
127.0.0.1:6379> zadd zsetkey 2 'two'
(integer) 1
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
127.0.0.1:6379> zadd zsetkey 3 'two'
(integer) 0
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "3"
zadd zsetkey 3 'two'这条语句代表更新失败,但是顺序号已经改变
这里需要注意score必须是整数,不能是字符型。
2.zrange zsetkey start end withscores:获取zsetkey的有序集合的数字,从start取到end,并且附上顺序号。若不加withscores那么不附加顺序号
127.0.0.1:6379> zrange zsetkey 0 -1
1) "one"
2) "two"
3.zrem zsetkey member:删除zsetkey中的member元素。返回1代表删除成功
127.0.0.1:6379> zrem zsetkey two
(integer) 1
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
4.zincrby zsetkey incrment member:如果在名称为zsetkey的zset中已经存在元素member,那么该元素的score增加Increment否则向该集合中添加该元素,其score的值为Increment。若成功返回的是member增长之后的序列号。
127.0.0.1:6379> zadd zsetkey 3 'three'
(integer) 1
127.0.0.1:6379> zincrby zsetkey 1 one
"2"
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "2"
3) "two"
4) "2"
5) "three"
6) "3"
127.0.0.1:6379> zincrby zsetkey 3 one
"5"
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "one"
6) "5"
从上面的例子可以看出,序列号可以相同,类似二维数组。
5.zrank zsetkey member:返回名称为zsetkey的zset中member元素的索引值(按score从小到大排序)即下标。返回的时索引值
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "one"
6) "5"
127.0.0.1:6379> zrank zsetkey three
(integer) 1
127.0.0.1:6379> zrank zsetkey one
(integer) 2
three和one的索引分别是1和2.
6.zrevrank zsetkey member:返回名称为zsetkey的zset中的member元素的索引值(按score从大到小排序)。
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "one"
6) "5"
127.0.0.1:6379> zrevrank zsetkey one
(integer) 0
127.0.0.1:6379> zrevrank zsetkey three
(integer) 1
7.zrevrange zsetkey start end:按从大到小的顺序,从zsetkey中从start取到end。
127.0.0.1:6379> zrevrange zsetkey 0 -1 withscores
1) "one"
2) "5"
3) "three"
4) "3"
5) "two"
6) "2"
8.zrangebyscore zsetkey start end:返回集合中给定score区间内的值
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "5"
127.0.0.1:6379> zrangebyscore zsetkey 3 5 withscores
1) "three"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
7) "one"
8) "5"
这个和zrange最大的区别就是范围值是存储的key值而不是默认的整形索引值。
9.zcount zsetkey start end:返回给定范围内的members数量
127.0.0.1:6379> zcount zsetkey 3 5
(integer) 4
4个,没有问题
10.zcard zsetkey:返回zsetkey中所有元素的个数
127.0.0.1:6379> zcard zsetkey
(integer) 5
11.zremrangebyrank zsetkey start end :删除集合内给定区间内的元素
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "5"
127.0.0.1:6379> zremrangebyrank zsetkey 1 3
(integer) 3
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "5"
上面的操作删除了zsetkey中索引从1到3的,也就是three four five。
12.zremrangebyscore zsetkey start end:按顺序删除zsetkey中给定范围内的元素(按顺序而不是按所以删除)
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
127.0.0.1:6379> zremrangebyscore zsetkey 2 3
(integer) 2
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "four"
4) "4"
Sorted set(zset)是set的升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新得值调整顺序。可以理解为有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。
二、有序集合的操作方法
下面score是按顺序操作而rank是按索引操作
1.zadd key score member:向名称为key的zset中添加元素member,score用于排序。如果该元素存在,则更新其顺序。
127.0.0.1:6379> zadd zsetkey 1 'one'
(integer) 1
127.0.0.1:6379> zadd zsetkey 2 'two'
(integer) 1
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
127.0.0.1:6379> zadd zsetkey 3 'two'
(integer) 0
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "3"
zadd zsetkey 3 'two'这条语句代表更新失败,但是顺序号已经改变
这里需要注意score必须是整数,不能是字符型。
2.zrange zsetkey start end withscores:获取zsetkey的有序集合的数字,从start取到end,并且附上顺序号。若不加withscores那么不附加顺序号
127.0.0.1:6379> zrange zsetkey 0 -1
1) "one"
2) "two"
3.zrem zsetkey member:删除zsetkey中的member元素。返回1代表删除成功
127.0.0.1:6379> zrem zsetkey two
(integer) 1
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
4.zincrby zsetkey incrment member:如果在名称为zsetkey的zset中已经存在元素member,那么该元素的score增加Increment否则向该集合中添加该元素,其score的值为Increment。若成功返回的是member增长之后的序列号。
127.0.0.1:6379> zadd zsetkey 3 'three'
(integer) 1
127.0.0.1:6379> zincrby zsetkey 1 one
"2"
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "2"
3) "two"
4) "2"
5) "three"
6) "3"
127.0.0.1:6379> zincrby zsetkey 3 one
"5"
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "one"
6) "5"
从上面的例子可以看出,序列号可以相同,类似二维数组。
5.zrank zsetkey member:返回名称为zsetkey的zset中member元素的索引值(按score从小到大排序)即下标。返回的时索引值
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "one"
6) "5"
127.0.0.1:6379> zrank zsetkey three
(integer) 1
127.0.0.1:6379> zrank zsetkey one
(integer) 2
three和one的索引分别是1和2.
6.zrevrank zsetkey member:返回名称为zsetkey的zset中的member元素的索引值(按score从大到小排序)。
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "one"
6) "5"
127.0.0.1:6379> zrevrank zsetkey one
(integer) 0
127.0.0.1:6379> zrevrank zsetkey three
(integer) 1
7.zrevrange zsetkey start end:按从大到小的顺序,从zsetkey中从start取到end。
127.0.0.1:6379> zrevrange zsetkey 0 -1 withscores
1) "one"
2) "5"
3) "three"
4) "3"
5) "two"
6) "2"
8.zrangebyscore zsetkey start end:返回集合中给定score区间内的值
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "5"
127.0.0.1:6379> zrangebyscore zsetkey 3 5 withscores
1) "three"
2) "3"
3) "four"
4) "4"
5) "five"
6) "5"
7) "one"
8) "5"
这个和zrange最大的区别就是范围值是存储的key值而不是默认的整形索引值。
9.zcount zsetkey start end:返回给定范围内的members数量
127.0.0.1:6379> zcount zsetkey 3 5
(integer) 4
4个,没有问题
10.zcard zsetkey:返回zsetkey中所有元素的个数
127.0.0.1:6379> zcard zsetkey
(integer) 5
11.zremrangebyrank zsetkey start end :删除集合内给定区间内的元素
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
5) "four"
6) "4"
7) "five"
8) "5"
9) "one"
10) "5"
127.0.0.1:6379> zremrangebyrank zsetkey 1 3
(integer) 3
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "5"
上面的操作删除了zsetkey中索引从1到3的,也就是three four five。
12.zremrangebyscore zsetkey start end:按顺序删除zsetkey中给定范围内的元素(按顺序而不是按所以删除)
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
127.0.0.1:6379> zremrangebyscore zsetkey 2 3
(integer) 2
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "one"
2) "1"
3) "four"
4) "4"
相关文章推荐
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- redis 学习手册之有序集合数据类型sorted-sets操作
- NoSQL之Redis对set(集合)数据类型的操作之二
- Redis有序集合数据类型操作命令
- Nosql之Redis: zset(有序集)数据类型及操作命令
- Redis有序集合数据类型操作命令
- NoSQL之Redis对set(集合)数据类型的操作之一
- Redis 数据类型分析 字符串 哈希 列表 集合 有序集合 优缺点 分析 注意事项 存储结构
- go操作redis的有序集合(zset)
- Redis有序集合类型的操作_动力节点Java学院整理
- Redis有序集合类型的操作
- redis数据类型(五)有序集合类型
- Redis数据类型之有序集合类型--Redis系列六
- 系统学习redis之七——redis数据类型之zset数据类型及操作
- php操作redis中的hash和zset类型数据的方法和代码例子
- NoSQL之Redis(二)---Java操作Redis存储自定义类型数据
- NoSQL之Redis对string数据类型的操作
- redis数据类型-有序集合
- Redis源码解析(四):redis之数据类型哈希表、列表、集合和有序集合