NoSQL之Redis對set(集合)數據類型的操作之一

一、簡介

  Set是集合,它是string類型的無序集合。set是通過hash table實現的,添加、刪除和查找的複雜度都是0(1)。對集合我們可以取並集、交集、差集。通過這些操作我們可以實現sns中的好友推薦和blog的tag功能。

無需集合。

二、set的相關操作

1.sadd setkey value:向名稱爲setkey的set中添加value元素。添加成功返回1,添加失敗返回0。同一個值不能重複添加。

127.0.0.1:6379> sadd setkey 'hello'
(integer) 1
127.0.0.1:6379> sadd setkey 'world'
(integer) 1
127.0.0.1:6379> sadd setkey 'world'
(integer) 0
127.0.0.1:6379> smembers setkey
1) "world"
2) "hello"

添加進去的元素排序是隨機的,無序的。

2.smembers setkey:獲取setkey對應的集合中的所有元素。例子同1

3.srem setkey value:刪除名稱爲setkeyt中的value元素。刪除成功返回值爲1

127.0.0.1:6379> smembers setkey
1) "world"
2) "hello"
127.0.0.1:6379> srem setkey hello
(integer) 1
127.0.0.1:6379> smembers setkey
1) "world"

4.spop setkey:從setkey的集合中隨機彈出並且刪除一個元素。

127.0.0.1:6379> smembers setkey
1) "2000"
2) "world"
3) "4000"
4) "longjian"
5) "3000"
6) "hello"
7) "zhiqiang"
127.0.0.1:6379> spop setkey
"longjian"
127.0.0.1:6379> spop setkey
"4000"
127.0.0.1:6379> spop setkey
"hello"

127.0.0.1:6379> smembers setkey
1) "world"
2) "3000"
3) "2000"
4) "zhiqiang"

無規律隨機彈出,並且將該元素從集合刪除。

5.sdiff setkey1 setkey2:返回兩個集合的差集,以setkey1爲標準,誰在前面以誰爲標準。

127.0.0.1:6379> smembers setkey
1) "world"
2) "3000"
3) "2000"
127.0.0.1:6379> smembers setkey1
1) "world"
2) "hello"
3) "2000"
127.0.0.1:6379> sdiff setkey setkey1
1) "3000"
127.0.0.1:6379> sdiff setkey1 setkey
1) "hello"

6.sdiffstore setkey3 setkey1 setkey2:返回setkey1,setkey2,setkey3的差集,並將結果存入到setkey3中。如果成功則返回1

127.0.0.1:6379> smembers setkey1
1) "world"
2) "hello"
3) "2000"
127.0.0.1:6379> smembers setkey2
1) "3000"
2) "world"
3) "2000"
127.0.0.1:6379> sdiffstore setkey3 setkey1 setkey2
(integer) 1
127.0.0.1:6379> smembers setkey3
1) "hello"
127.0.0.1:6379> sdiffstore setkey3 setkey2 setkey1
(integer) 1
127.0.0.1:6379> smembers setkey3
1) "3000"

從上面的例子很容易看出,如果連續用sdiifstore在一個key中存取差集的結果,是回覆蓋掉之前的value。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章