5.redis Set 数据类型

无序的字符串集合,2 ^32 40亿数据 ,时间复杂度O(1),给予hashtable 实现,可以实现交集、并集、补集操作。

1.添加元素、查看元素

都是无序的

192.168.50.160:6379> sadd set aaa bbb ccc ddd
(integer) 4
192.168.50.160:6379> smembers set
1) "ddd"
2) "aaa"
3) "ccc"
4) "bbb"

2.删除元素

  1)指定key ,删除成功 即 为1

192.168.50.160:6379> smembers set
1) "ddd"
2) "aaa"
3) "ccc"
4) "bbb"
192.168.50.160:6379> srem set aaa
(integer) 1
192.168.50.160:6379> smembers set
1) "ddd"
2) "ccc"
3) "bbb"

  2)随机删除

 192.168.50.160:6379> smembers set
1) "ddd"
2) "ccc"
3) "bbb"
192.168.50.160:6379> spop set
"bbb"
192.168.50.160:6379> smembers set
1) "ddd"
2) "ccc"

3.交集、并集、差集(和数学上的概念一致)

  

192.168.50.160:6379> smembers set1
1) "ddd"
2) "aaa"
3) "ccc"
4) "bbb"
192.168.50.160:6379> smembers set2
1) "ddd"
2) "eee"
3) "fff"
4) "bbb"
192.168.50.160:6379> sinter set1 set2                 //交集
1) "ddd"
2) "bbb"
192.168.50.160:6379> sunion set1 set2                  //并集
1) "ddd"
2) "fff"
3) "bbb"
4) "aaa"
5) "ccc"
6) "eee"
192.168.50.160:6379> sdiff set1 set2                   //差集 ,左侧减去右侧,以左侧为主
1) "aaa"
2) "ccc"

每个方法都有一个升级的方法:

  添加后缀store ,即可存到另一个set 里

192.168.50.160:6379> sdiffstore setdiff set1 set2
(integer) 2
192.168.50.160:6379> smembers setdiff
1) "aaa"
2) "ccc"

4.将某个元素从set1 移动到set2

192.168.50.160:6379> smembers set1
1) "ddd"
2) "aaa"
3) "ccc"
4) "bbb"
192.168.50.160:6379> smembers set2
1) "ddd"
2) "eee"
3) "fff"
4) "bbb"


192.168.50.160:6379> smove set1 set2 aaa
(integer) 1
192.168.50.160:6379> smembers set2
1) "ddd"
2) "eee"
3) "fff"
4) "bbb"
5) "aaa"

5.查看元素个数

192.168.50.160:6379> scard set2
(integer) 5

6.判断某个元素是否属于 该set

返回1表示属于

192.168.50.160:6379> sismember set2 ddd
(integer) 1

应用场景:

1.统计某网站一天所有用户访问量,即去重的ip地址

2.计算好友关系,X 关注了A,B,C ,Y关注了 Z,X,Y,求他们共同关注的好友。

 

posted on 2018-05-20 17:45  老曹123  阅读(96)  评论(0)    收藏  举报

导航