Redis Sorted Set有序集合 存储操作方法

欢迎大家加入 459479177QQ群进行交流

这一章是Redis Sorted Set有序集合五种方式的最后一种,

首先我们使用redis-cli进入redis

[[email protected] ~]# redis-cli 
127.0.0.1:6379>

1>zadd

方法:zadd key source1 [key sourceN...]

描述:添加一个或多个有序集合成员元素,如果存在则更新成员的分数值,并插入此成语,确保该成员在正确的位置,如果key不存在则创建一个新的key,然后在执行zadd操作

127.0.0.1:6379> zadd zkey1 1 Sunshine            \\第一次成员分数1
(integer) 1
127.0.0.1:6379> zrange zkey1 0 -1 withscores
1) "Sunshine"
2) "1"
127.0.0.1:6379> zadd zkey1 3 Sunshine            \\成员分数3
(integer) 0
127.0.0.1:6379> zrange zkey1 0 -1 withscores      \\成员分数变成3,成员元素没变   
1) "Sunshine"
2) "3"

2>zcard

方法:zcard key

描述:查看key的成员元素个数,一个分数值对应多个元素

127.0.0.1:6379> zadd zkey 1 Sunshine 1 Sunshine2 1 Sunshine3
(integer) 3
127.0.0.1:6379> zcount zkey 1 3
(integer) 3
127.0.0.1:6379> zrange zkey 0 -1 withscores
1) "Sunshine"
2) "1"
3) "Sunshine2"
4) "1"
5) "Sunshine3"
6) "1"

3>zcount

方法:zacount key min max

描述:统计指定集合的成员元素

127.0.0.1:6379> zrange zkey2 0 -1 withscores
(empty list or set)
127.0.0.1:6379> zadd zkey2 1 Sushine 1 Sunshine0 
(integer) 2
127.0.0.1:6379> zrange zkey2 0 -1 withscores
1) "Sunshine0"
2) "1"
3) "Sushine"
4) "1"
127.0.0.1:6379> zcount zkey2 1 2
(integer) 2

4>zincrby

方法:zincrby key increment member

描述:对有序集合指定成员分数值增量,如果-则为减

127.0.0.1:6379> zrange zkey2 0 -1 withscores
1) "Sunshine0"
2) "1"
3) "Sushine"
4) "1"
5) "Sunshine"
6) "5"
127.0.0.1:6379> zincrby zkey2 5 "Sunshine"
"10"
127.0.0.1:6379> zrange zkey2 0 -1 withscores
1) "Sunshine0"
2) "1"
3) "Sushine"
4) "1"
5) "Sunshine"
6) "10"
127.0.0.1:6379> zincrby zkey2 -5 "Sunshine"
"5"
127.0.0.1:6379> zrange zkey2 0 -1 withscores
1) "Sunshine0"
2) "1"
3) "Sushine"
4) "1"
5) "Sunshine"
6) "5"

5>zintersotre

方法:zintersotre destination numkeys key [key...] [weights weighe [weight...]] [aggregate sun|min|max]

描述:把后面destination后面的集合相同成员分数值相加并添加至destinatio集合成员

127.0.0.1:6379> zrange zkey3 0 -1 withscores
1) "Sunshine"
2) "11"
3) "SunshineBoy"
4) "44"
127.0.0.1:6379> zrange zkey4 0 -1 withscores
1) "Sunshine"
2) "22"
3) "SunshineBoy"
4) "33"
127.0.0.1:6379> zinterstore zkey5 2 zkey4 zkey3
(integer) 2
127.0.0.1:6379> zrange zkey5 0 -1 withscores
1) "Sunshine"
2) "33"
3) "SunshineBoy"
4) "77"

6>zlexcount

方法:zlexcount key min max

描述:指定有序集合字典区间成员数

127.0.0.1:6379> zrange zkey6 0 -1 withscores
 1) "a"
 2) "0"
 3) "b"
 4) "0"
 5) "c"
 6) "0"
 7) "d"
 8) "0"
 9) "e"
10) "0"
11) "f"
12) "0"
13) "g"
14) "0"
127.0.0.1:6379> zlexcount zkey6 [b [f
(integer) 5
127.0.0.1:6379> zlexcount zkey6 [b [g
(integer) 6

7>zrange

方法:zrange key start end [withscores]

描述:指定查看有序集合区间成员

127.0.0.1:6379> zrange zkey6 0 -1 withscores
 1) "a"
 2) "0"
 3) "b"
 4) "0"
 5) "c"
 6) "0"
 7) "d"
 8) "0"
 9) "e"
10) "0"
11) "f"
12) "0"
13) "g"
14) "0"
127.0.0.1:6379> zrange zkey6 0 3 withscores
1) "a"
2) "0"
3) "b"
4) "0"
5) "c"
6) "0"
7) "d"
8) "0"

8>zrangebylex

方法:zrangebylex key min max [limit offset count]

描述:通过字典区间返回有序集合成员

127.0.0.1:6379> zrangebylex zkey6 - [c
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> zrangebylex zkey6 - +
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
7) "g"
127.0.0.1:6379> zrange zkey6 0 -1 withscores
 1) "a"
 2) "0"
 3) "b"
 4) "0"
 5) "c"
 6) "0"
 7) "d"
 8) "0"
 9) "e"
10) "0"
11) "f"
12) "0"
13) "g"
14) "0"

9>zrangesotre

方法:zrangesotre key min max [withscores] [limit offsec count]

描述:通过成员分数值返回区间成员

127.0.0.1:6379> zrangebyscore zkey10 -inf +inf            \\显示整个有序集合成员
1) "jack"
2) "tom"
3) "Sunshine"
127.0.0.1:6379> zrangebyscore zkey10 -inf +inf withscores    \\显示整个有序集合成员的score
1) "jack"
2) "2000"
3) "tom"
4) "8000"
5) "Sunshine"
6) "15000"
127.0.0.1:6379> zrangebyscore zkey10 -inf 5000  withscores        \\显示小于等于5000分数值的成员
1) "jack"
2) "2000"
127.0.0.1:6379> zrangebyscore zkey10  (5000 20000  withscores        \\显示分数值5000至20000之间的成员
1) "tom"
2) "8000"
3) "Sunshine"
4) "15000"
127.0.0.1:6379>

10>zrank

方法:zrank key member

描述:显示有序集合成员的索引(index或者叫下标)

127.0.0.1:6379> zrank zkey10 tom
(integer) 1
127.0.0.1:6379> zrank zkey10 Sunshine
(integer) 2
127.0.0.1:6379> zrank zkey10 jack
(integer) 0
127.0.0.1:6379> zrange zkey10 0 -1 withscores
1) "jack"
2) "2000"
3) "tom"
4) "8000"
5) "Sunshine"
6) "15000"

11>zrem

方法:zrem key member [member...]

描述:移除一个有序集合成员或多个

127.0.0.1:6379> zrange zkey10 0 -1 withscores
1) "jack"
2) "2000"
3) "tom"
4) "8000"
5) "Sunshine"
6) "15000"
127.0.0.1:6379> zrem zkey10 jack
(integer) 1
127.0.0.1:6379> zrem zkey10 tom Sunshine
(integer) 2
127.0.0.1:6379> zrange zkey10 0 -1 withscores
(empty list or set)

12>zremrangebylex

方法:zremrangebylex key min max

描述:Zremrangebylex 命令用于移除有序集合中给定的字典区间的所有成员

127.0.0.1:6379> zrange zkey2 0 -1 withscores
 1) "a"
 2) "1"
 3) "b"
 4) "1"
 5) "c"
 6) "1"
 7) "d"
 8) "1"
 9) "e"
10) "1"
11) "f"
12) "1"
13) "g"
14) "1"
15) "h"
16) "1"
17) "l"
18) "1"
19) "m"
20) "1"
127.0.0.1:6379> zremrangebylex zkey2 [a [c
(integer) 3
127.0.0.1:6379> zrange zkey2 0 -1 withscores
 1) "d"
 2) "1"
 3) "e"
 4) "1"
 5) "f"
 6) "1"
 7) "g"
 8) "1"
 9) "h"
10) "1"
11) "l"
12) "1"
13) "m"
14) "1"
127.0.0.1:6379> zremrangebylex zkey2 [d [h
(integer) 5
127.0.0.1:6379> zrange zkey2 0 -1 withscores
1) "l"
2) "1"
3) "m"
4) "1"

13>zremrangeburank

方法:zremrangebyrank key start end

描述:移除有序集合中给定的排名区间的所有成员(指定是指下标)

127.0.0.1:6379> zrange zkey11 0 -1 withscores
1) "Sunshine"
2) "100"
3) "SunshineBoy"
4) "200"
5) "SnshineBoySZF"
6) "300"
127.0.0.1:6379> zremrangebyrank zkey11 0 0
(integer) 1
127.0.0.1:6379> zrange zkey11 0 -1 withscores
1) "SunshineBoy"
2) "200"
3) "SnshineBoySZF"
4) "300"
127.0.0.1:6379> zremrangebyrank zkey11 0 0
(integer) 1
127.0.0.1:6379> zrange zkey11 0 -1 withscores
1) "SnshineBoySZF"
2) "300"
127.0.0.1:6379> zadd zkey11 500 hehe
(integer) 1
127.0.0.1:6379> zrange zkey11 0 -1 withscores
1) "SnshineBoySZF"
2) "300"
3) "hehe"
4) "500"
127.0.0.1:6379> zremrangebyrank zkey11 0 1
(integer) 2
127.0.0.1:6379> zrange zkey11 0 -1 withscores
(empty list or set)

14>zremrangebyscore

方法:zremrangebyscore key min max

描述:指定有序集合,移除(score)区间的成员

127.0.0.1:6379> zadd zkey12 100 Sunshine 200 SunshineBoy 300 SnshineBoySZF
(integer) 3
127.0.0.1:6379> zrange zkey12 0 -1 withscores
1) "Sunshine"
2) "100"
3) "SunshineBoy"
4) "200"
5) "SnshineBoySZF"
6) "300"
127.0.0.1:6379> zremrangebyscore zkey12 200 300
(integer) 2
127.0.0.1:6379> zrange zkey12 0 -1 withscores
1) "Sunshine"
2) "100"

15>zrevrage

方法:zrevrange key start end [withscores]

描述:指定有序集合倒序排序

127.0.0.1:6379> zrange zkey12 0 -1 withscores
1) "Sunshine"
2) "100"
3) "SunshineBoy"
4) "200"
5) "SnshineBoySZF"
6) "300"
127.0.0.1:6379> zrevrange zkey12 0 -1 withscores
1) "SnshineBoySZF"
2) "300"
3) "SunshineBoy"
4) "200"
5) "Sunshine"
6) "100"

16>zrevrangebybscore

方法:zrevrangebyscore key min max [withscores] [limit offsec count]

描述:指定有序集合,按指定分数值从高到底排序(通俗讲就是,按照指定值,倒序)

127.0.0.1:6379> zrevrange zkey12 0 -1 withscores

1) "SnshineBoySZF"

2) "300"

3) "SunshineBoy"

4) "200"

5) "Sunshine"

6) "100"

127.0.0.1:6379> zrevrangebyscore zkey12 +inf -inf            \\倒序排列

1) "SnshineBoySZF"

2) "SunshineBoy"

3) "Sunshine"

127.0.0.1:6379> zrevrangebyscore zkey12 200 100

1) "SunshineBoy"

2) "Sunshine"

17>zrevrank

方法:zrevrank key start end [withscores] [limit offsec count]

127.0.0.1:6379> zrange zkey 0 -1 withscores
1) "sunshine"
2) "100"
3) "tom"
4) "200"
5) "jack"
6) "500"
7) "hehe"
8) "2000"
127.0.0.1:6379> zrevrank zkey tom
(integer) 2
127.0.0.1:6379> zrevrank zkey hehe
(integer) 0

18>zscore

方法:zscore key member

描述:返回有序集合中,成员的分数值

127.0.0.1:6379> zrange zkey 0 -1 withscores
1) "sunshine"
2) "100"
3) "tom"
4) "200"
5) "jack"
6) "500"
7) "hehe"
8) "2000"
127.0.0.1:6379> zscore zkey tom
"200"
127.0.0.1:6379> zscore zkey jack
"500"

19>zunionstore

方法:ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] {直接复制官方,官方的例子没整明白,容后补写指理论}

描述:计算给定的一个或多个有序集的并集,并存储在新的 key 中。

127.0.0.1:6379> zadd zkey1 100 a 200 b 
(integer) 2
127.0.0.1:6379> zadd zkey2 300 c 400 b 500 e
(integer) 1
127.0.0.1:6379> zunionstore zkey3  2 zkey1 zkey2 
(integer) 4
127.0.0.1:6379> zrange zkey3 0 -1 withscores
1) "a"
2) "100"
3) "c"
4) "300"
5) "e"
6) "500"
7) "b"
8) "600"

20>zscan

方法:ZSCAN key cursor [MATCH pattern] [COUNT count]

描述:迭代有序集合中的元素(包括元素成员和元素分值)

127.0.0.1:6379> zrange zkey 0 -1 withscores
 1) "No_s\x94ql"
 2) "1"
 3) "abc"
 4) "1"
 5) "ao"
 6) "1"
 7) "apche"
 8) "1"
 9) "mysql"
10) "1"
11) "nginx"
12) "1"
127.0.0.1:6379> zscan zkey 0 match a* count 1
1) "0"
2) 1) "abc"
   2) "1"
   3) "ao"
   4) "1"
   5) "apche"
   6) "1"

至此Redis sorted set有序集合就介绍完毕了!

欢迎大家加入 459479177QQ群进行交流

时间: 2024-08-01 15:59:01

Redis Sorted Set有序集合 存储操作方法的相关文章

辛星浅析Redis中的有序集合

Redis中的有序集合也就是sorted-set,它和set很相似,都是字符串的集合,都不允许重复的成员出现在一个集合张.有序集合与集合的主要差别是有序集合中的每一个元素都有一个序号与其相连,这个序号即score,Redis通过这个序号来为集合中的成员进行从小到大的排列.需要特别说明的是,尽管有序集合的元素值是唯一的,但是该value对应的score却可以是多个.在有序集合中添加.删除.更新一个成员的操作都很快,其时间复杂度是集合中成员的对数. 因为有序集合中的成员在集合中的位置是有序的,即便是

【Redis源码剖析】 - Redis数据类型之有序集合zset

原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/51231967 这周事情比较多,原本计划每周写两篇文章的任务看来是完不成了.今天为大家带来有序集合zset的源码分析. Redis中的zset主要支持以下命令: zadd.zincrby zrem.zremrangebyrank.zremrangebyscore.zremrangebyrank zrange.zrevrange.zrangebyscore.zrevrangebys

Redis数据操作--有序集合

| Redis 的集合以无序的方式储存多个各不相同的元素 # 用户可以快速地向集合添加元素,或者从集合里面删除元素,也可以对多个集合 进行集合运算操作,比如计算并集,交集和差集. | 元素操作 -- 添加元素     sadd key element [element ...]     # 将一个或多个元素添加到给定的集合里面,已经存在于集合的元素会         自动被忽略,命令返回新添加到集合的元素数量. -- 移除元素     srem key element [element ...]

六、Redis 基础命令--有序集合

1.有序集合是由散列表和跳跃表实现的,所以即使元素再多,获取中间的元素速度也很快. 2.有序集合为集合中的每个元素都关联了一个分数. 3.有序集合与列表的对比 相同点: 都是有序的,都可以获取某一个范围的元素 不同点: 1.列表是采用双向链表实现的,所以获取接近两端的数据很快,获取中间数据会很慢. 2.有序集合则采用的是散列表和跳跃表(百度好理解) 3.列表中不能调整某个元素的位置,但是集合可以,通过更改分数. 4.有序集合更耗费内存 4.ZADD 添加元素,返回新添加的个数 (不含已经有的)

Redis Sets无序集合 存储操作方法

欢迎大家加入 459479177QQ群进行交流 这次介绍的是Sets无序集合 老生常谈,使用redis-cli进入我们的redis服务 [[email protected] ~]# redis-cli  127.0.0.1:6379> 1>sadd 方法:sadd key value [value...] 描述:往key添加一个或多个value,如果value元素存在则忽略 127.0.0.1:6379> smembers skey1 (empty list or set) 127.0.

Redis中有序集合的常用命令有哪些?

本文和大家分享的主要是redis 中有序集合类型的常用命令,一起来看看吧,希望对大家 学习redis有所帮助. 一.有序集合类型 有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序而已.Redis 中的有序集合类型,实际上是在集合类型上,为每个元素都关联一个分数,有序实际上说的是分数有序,我们根据分数的范围获取集合及其他操作.集合的元素依然是不能够相同的,但是分数可以相同. 下面列举有序集合和类型和列表类型的相似处: ① 两者都是有序的(废话!) ② 两者都可以获得某一范

Redis中有序集合与列表占用内存分析

在说正题之前需要先了解几种定义:字典.压缩列表与跳跃表. 字典:非常常见的数据结构,key-value结构. 常见的实现有红黑树(stl中的map),哈希表(stl中的unordered_map).红黑树的查找操作具有O(logN)的时间复杂度.哈希表的查找操作具有O(1)的时间复杂度. redis中的字典使用哈希表作为底层实现. 压缩列表:由一些列特殊编码的连续内存块组成的顺序型数据结构. 压缩列表可以包含多种节点(只能保存一种的那叫数组). 压缩列表的优点是节省内存.顺序结构拥有的缺点压缩列

API的理解和使用——有序集合

有序集合常用的命令 命令 功能 zadd key score member [score member ... ] 添加元素 zcard key 计算成员个数 zscore key member 计算某个成员分数 zrank      key member zrevrank key member 计算成员排名 zrem key member [member ...] 删除成员 zincrby key increment member 增长成员分数 zrange      key start en

Redis 数据类型分析 字符串 哈希 列表 集合 有序集合 优缺点 分析 注意事项 存储结构

一.提高Redis使用性能秘诀 KEY尽量少的原则,能放在1个KEY的就放入1个KEY,KEY开销很大尽量减少与Redis发生的交互次数,能批量的就批量,能事务.管道的就事务.管道从业务架构分析确定使用哪种数据类型,从全局出发,如果类型选错了再改变就很不容易使用每一个Redis命令注意是O(1),还是O(N),切记滥用,认准每个命令的特性再使用也不迟使用PHP Redis的C语言扩展,性能远远高于PHP脚本编写的文件时刻清醒你往Redis里存储了什么,频繁交互.相对静态的小数据存储至Redis是