set 无序集合

集合的性质: 唯一性,无序性,确定性

注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素

但,因为集合的无序性,无法通过下标或范围来访问部分元素.

因此想看元素,要么随机先一个,要么全选

Redis 127.0.0.1:6379>SADD person zhangsan

redis 127.0.0.1:6379>SADD person lisi

redis 127.0.0.1:6379>SADD person wangwu

redis 127.0.0.1:6379>SADD person lisi

redis 127.0.0.1:6379>SMEMBERS person

1) wangwu

2) zhangsan

3) lisi

-----------------------------------------------

也可以一次性设置值:

redis 127.0.0.1:6379>SADD person zhangsan lisi wangwu lisi

redis 127.0.0.1:6379>SMEMBERS person

1) wangwu

2) zhangsan

3) lisi

sadd key  value1 value2

作用: 往集合key中增加元素

srem value1 value2

作用: 删除集合中集为 value1 value2的元素

返回值: 忽略不存在的元素后,真正删除掉的元素的个数

spop key

作用: 返回并删除集合中key中1个随机元素

随机--体现了无序性

srandmember key

作用: 返回集合key中,随机的1个元素.

sismember key  value

作用: 判断value是否在key集合中

是返回1,否返回0

smembers key

作用: 返回集中中所有的元素

scard key

作用: 返回集合中元素的个数

smove source dest value

作用:把source中的value删除,并添加到dest集合中

sinter  key1 key2 key3

作用: 求出key1 key2 key3 三个集合中的交集,并返回

redis 127.0.0.1:6379> sadd s1 0 2 4 6

(integer) 4

redis 127.0.0.1:6379> sadd s2 1 2 3 4

(integer) 4

redis 127.0.0.1:6379> sadd s3 4 8 9 12

(integer) 4

redis 127.0.0.1:6379> sinter s1 s2 s3

1) "4"

redis 127.0.0.1:6379> sinter s3 s1 s2

1) "4"

sinterstore dest key1 key2 key3

作用: 求出key1 key2 key3 三个集合中的交集,并赋给dest

suion key1 key2.. Keyn

作用: 求出key1 key2 keyn的并集,并返回

sdiff key1 key2 key3

作用: 求出key1与key2 key3的差集

即key1-key2-key3

order set 有序集合

redis有序集合和无序集合一样也是string类型元素的集合,且不允许重复的成员

redis 127.0.0.1:6379>ZADD person 3 zhangsan

redis 127.0.0.1:6379>ZADD person 2 lisi

redis 127.0.0.1:6379>ZADD person 1 wangwu

redis 127.0.0.1:6379>ZADD person 4 zhaoliu

redis 127.0.0.1:6379>ZRANGE person 0 -1

1) wangwu

2) lisi

3) zhangsan

4) zhaoliu

-----------------------------------------------

也可以一次性设置值:

redis 127.0.0.1:6379>ZADD person 3 zhangsan 2 lisi 1 wangwu 4 zhaoliu

redis 127.0.0.1:6379>ZRANGE person 0 -1

1) wangwu

2) lisi

3) zhangsan

4) zhaoliu

zadd key score1 value1 score2 value2 ..

添加元素

redis 127.0.0.1:6379> zadd stu 18 lily19 hmm 20 lilei 21 lilei

(integer) 3

zrem key value1 value2 ..

作用: 删除集合中的元素

zremrangebyscore key min max

作用: 按照socre来删除元素,删除score在[min,max]之间的

redis 127.0.0.1:6379> zremrangebyscorestu 4 10

(integer) 2

redis 127.0.0.1:6379> zrange stu 0 -1

1) "f"

zremrangebyrank key start end

作用: 按排名删除元素,删除名次在[start,end]之间的

redis 127.0.0.1:6379> zremrangebyrankstu 0 1

(integer) 2

redis 127.0.0.1:6379> zrange stu 0 -1

1) "c"

2) "e"

3) "f"

4) "g"

zrank key member

查询member的排名(升续 0名开始)

zrevrank key memeber

查询 member的排名(降续 0名开始)

ZRANGE key start stop [WITHSCORES]

把集合排序后,返回名次[start,stop]的元素

默认是升续排列

Withscores 是把score也打印出来

zrevrange key start stop

作用:把集合降序排列,取名字[start,stop]之间的元素

zrangebyscore  key minmax [withscores] limit offset N

作用: 集合(升续)排序后,取score在[min,max]内的元素,

并跳过 offset个, 取出N个

redis 127.0.0.1:6379> zadd stu 1 a 3 b 4c 9 e 12 f 15 g

(integer) 6

redis 127.0.0.1:6379> zrangebyscore stu3 12 limit 1 2 withscores

1) "c"

2) "4"

3) "e"

4) "9"

zcard key

返回元素个数

zcount key min max

返回[min,max] 区间内元素的数量

zinterstore destination numkeys key1 [key2 ...]

[WEIGHTS weight [weight ...]]

[AGGREGATE SUM|MIN|MAX]

求key1,key2的交集,key1,key2的权重分别是 weight1,weight2

聚合方法用: sum|min|max

聚合的结果,保存在dest集合内

注意: weights,aggregate如何理解?

答: 如果有交集, 交集元素又有socre,score怎么处理?

Aggregate sum->score相加  , min 求最小score, max 最大score

另: 可以通过weigth设置不同key的权重, 交集时,socre * weights

详见下例

redis 127.0.0.1:6379> zadd z1 2 a 3 b 4c

(integer) 3

redis 127.0.0.1:6379> zadd z2 2.5 a 1 b8 d

(integer) 3

redis 127.0.0.1:6379> zinterstore tmp 2z1 z2

(integer) 2

redis 127.0.0.1:6379> zrange tmp 0 -1

1) "b"

2) "a"

redis 127.0.0.1:6379> zrange tmp 0 -1withscores

1) "b"

2) "4"

3) "a"

4) "4.5"

redis 127.0.0.1:6379> zinterstore tmp 2z1 z2 aggregate sum

(integer) 2

redis 127.0.0.1:6379> zrange tmp 0 -1withscores

1) "b"

2) "4"

3) "a"

4) "4.5"

redis 127.0.0.1:6379> zinterstore tmp 2z1 z2 aggregate min

(integer) 2

redis 127.0.0.1:6379> zrange tmp 0 -1withscores

1) "b"

2) "1"

3) "a"

4) "2"

redis 127.0.0.1:6379> zinterstore tmp 2z1 z2 weights 1 2

(integer) 2

redis 127.0.0.1:6379> zrange tmp 0 -1withscores

1) "b"

2) "5"

3) "a"

4) "7"

Redis set集合结构及命令详解的更多相关文章

  1. 06 redis中set结构及命令详解

    集合 set 相关命令 集合的性质: 唯一性,无序性,确定性 注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素 但,因为集合的无序性,无法通过下 ...

  2. Redis 之order set有序集合结构及命令详解

    1.zadd key score1 value1 score2 value2  添加元素 2.zrem key value1 value2 ..  删除集合中的元素 3.zremrangebyscor ...

  3. Redis 之set集合结构及命令详解

    注:集合的元素具有唯一性,无序性 1.sadd  key   value1  value2  添加一个集合 2.smembers   key  获取一个集合的所有值 3.srem  key  valu ...

  4. Redis 之hash集合结构及命令详解

    1.hset key field value   作用: 把key中 filed域的值设为value 注:如果没有field域,直接添加,如果有,则覆盖原field域的值 2.hmset key fi ...

  5. 08 redis中hash结构及命令详解

    Hash 哈希数据类型相关命令 hset key field value 作用: 把key中 filed域的值设为value 注:如果没有field域,直接添加,如果有,则覆盖原field域的值 hm ...

  6. Redis 之string结构及命令详解

    1.set  key  value  ex  秒数   px  毫秒数  nx / xx  设置一个值,注:ex 与 px 同时存在时,取写在后面的一个为有效期,nx表示key不存时设置成功,xx表示 ...

  7. 07 redi sorder set结构及命令详解

    zadd key score1 value1 score2 value2 .. 添加元素 redis 127.0.0.1:6379> zadd stu 18 lily 19 hmm 20 lil ...

  8. 04 redis list结构及命令详解

    一:link 链表结构 lpush key value 作用: 把值插入到链接头部[右边] 注意:rpush key value 插入到左边 rpop key 作用: 返回并删除链表尾元素 rpush ...

  9. Redis 之list链表结构及命令详解

    1.lpush  key   value   从左放一个值 2.rpush  key   value  从右放一个值 3.lrange  key  start   stop  获取链表数据(start ...

随机推荐

  1. java 集合框架(十五)Deque

    一.概述 Deque是Queue的子接口,我们知道Queue是一种队列形式,而Deque则是双向队列,它支持从两个端点方向检索和插入元素,因此Deque既可以支持LIFO形式也可以支持LIFO形式.D ...

  2. 关于echarts

    昨天随手玩了下echarts,看见同事纠结于echarts的兼容问题. 最简单的echarts(官网的): <div id="main" style="width: ...

  3. VC中基于 Windows 的精确定时

    在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位 机定时向下位机发送命令和传送数据等.特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要 ...

  4. uclibc和glibc的差别

    uClibc和Glibc并不相同,两者有许多不同之处,而且以下不同有可能给你带来一些问题. 1. uClibc比Glibc小,虽然uClibc和Glibc在已有的接口上是兼容的,而且采用uClibc编 ...

  5. FusionWidgets Bulb图

    1.数据源提供 Bulb.xml: <?xml version="1.0" encoding="UTF-8"?> <chart lowerLi ...

  6. 使用ifstream和getline读取文件内容[c++]

    转载:http://www.cnblogs.com/JCSU/articles/1190685.html 假设有一个叫 data.txt 的文件, 它包含以下内容: Fry: One Jillion ...

  7. 如何把Excel中的E+数值批量修改为文本格式?

    日常工作中,经常会出现这样的情况,当我们把一组数据导入EXCEL表中时,本想让数字在表中全部显示出来,但是表格中却以E+的方式显示,如果数据较少,我们可以用最笨的方法一个一个的点击单元格来实现目的,但 ...

  8. 第二篇:数据可视化 - 基本API

    前言 数据可视化是数据挖掘非常重要的一个环节,它不单在查阅了解数据环节使用到,在整个数据挖掘的流程中都会使用到. 因为数据可视化不单可以形象地展示数据,让你对数据有更好的总体上的了解,而且还可以让你清 ...

  9. 都在说RunLoop...... 到底什么是RunLoop?

    RunLoop(消息循环):说白了就是一种事件监听循环.就好比是一个while循环,监听到事件就起来,没有就休息. 介绍: 它可以在不同模式下进行切换,iOS有五种模式,其中UIInitializat ...

  10. [Luogu4175][CTSC2008]网络管理Network

    又是权限题qwq 一句话题意:带修改树上路径第k大 sol 数据结构?还是再见吧.学一手合格的整体二分,只有思维强大,才能见题拆题. 如果你做过整体二分的动态区间第k大就会发现这是一样的题. 无非是区 ...