5 redis 的set 資料型別

2021-08-25 11:10:57 字數 2316 閱讀 5137

無序的字串集合,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

應用場景:

2.計算好友關係,x 關注了a,b,c ,y關注了 z,x,y,求他們共同關注的好友。

Redis資料型別 Set

redis的set是string的無序集合。set元素最大可以包含2的32次方個元素 關於set集合型別除了基本的新增刪除操作。其他有用的操作還包含集合的取並集,交集,差集。通過這些操作可以很容易的實現sns中的好友推薦和blog的tag功能。sadd 新增元素 127.0.0.1 6379 sad...

Redis資料型別 SET

set 顧名思義為集合的意思 高中學過集合的知識我們知道,集合元素的個數是有限無序的,並且集合中元素不允許重複。和c 中的set容器是相同的。而這種特性可以使用set資料型別跟蹤一些唯一性資料,比如某一 的ip位址。在這種資料結構中,我們可以完成的操作有新增 刪除 測試元素是否存在等。由於集合本身的...

redis資料型別之set

在redis中,我們可以將set型別看作為沒有排序的字元集合,和list型別一樣,我們也可以在該型別的資料值上執行新增 刪除或判斷某一元素是否存在等操作。需要說明的是,這些操作的時間複雜度為o 1 即常量時間內完成次操作。set可包含的最大元素數量是4294967295。set操作命令如下 sadd...