Redis資料型別 Set

2021-06-28 19:38:19 字數 4530 閱讀 7162

redis的set是string的無序集合。set元素最大可以包含2的32次方個元素

關於set集合型別除了基本的新增刪除操作。其他有用的操作還包含集合的取並集,交集,差集。通過這些操作可以很容易的實現sns中的好友推薦和blog的tag功能。

sadd

新增元素

127.0.0.1:6379> sadd set value1

(integer) 1

127.0.0.1:6379> sadd set value1

(integer) 0

該條新增失敗是因為已存在value1這個值了

127.0.0.1:6379> sadd set value2

(integer) 1

127.0.0.1:6379> smembers set

1) "value2"

2) "value1"

srem

刪除元素

127.0.0.1:6379> smembers set

1) "value3"

2) "value2"

3) "value1"

127.0.0.1:6379> srem set value1

(integer) 1

127.0.0.1:6379> smembers set

1) "value3"

2) "value2"

spop

隨機返回並刪除乙個元素

127.0.0.1:6379> smembers set

1) "value3"

2) "value2"

3) "value5"

4) "value4"

5) "value6"

127.0.0.1:6379> spop set

"value5"

127.0.0.1:6379> smembers set

1) "value4"

2) "value2"

3) "value3"

4) "value6"

127.0.0.1:6379> smembers set

sdiff

返回第乙個和第二個差集

127.0.0.1:6379> smembers set1

1) "value3"

2) "value2"

3) "value1"

127.0.0.1:6379> smembers set2

1) "value2"

2) "value1"

127.0.0.1:6379> sdiff set1 set2

1) "value3"

sdiffstore

將set1與set2的差集存入set3中

127.0.0.1:6379> smembers set1

1) "value3"

2) "value2"

3) "value1"

127.0.0.1:6379> smembers set2

1) "value2"

2) "value1"

127.0.0.1:6379> sdiffstore set3 set1 set2

(integer) 1

127.0.0.1:6379> smembers set3

1) "value3"

sinter

得到所有key的交集,可以是2個也可以是多個

得到set1和set2的交集

127.0.0.1:6379> smembers set1

1) "value3"

2) "value2"

3) "value1"

127.0.0.1:6379> smembers set2

1) "value2"

2) "value1"

127.0.0.1:6379> sinter set1 set2

1) "value2"

2) "value1"

sinterstore

將指定的所有key的交集存入另乙個集合中

如下:將set1和set2的交集存入store中

127.0.0.1:6379> smembers set1

1) "value3"

2) "value2"

3) "value1"

127.0.0.1:6379> smembers set2

1) "value2"

2) "value1"

127.0.0.1:6379> sinterstore store set1 set2

(integer) 2

127.0.0.1:6379> smembers store

1) "value1"

2) "value2"

sunion

得指定的所有key的並集

如下:得到 set1和set2的並集

127.0.0.1:6379> smembers set1

1) "value3"

2) "value2"

3) "value1"

127.0.0.1:6379> smembers set2

1) "value2"

2) "value1"

127.0.0.1:6379> sunion set1 set2

1) "value1"

2) "value2"

3) "value3"

sunionstore

將指定的所有key的並集存入另外乙個集合中

如下:將set1和set2的並集存入store中

127.0.0.1:6379> smembers set1

1) "value3"

2) "value2"

3) "value1"

127.0.0.1:6379> smembers set2

1) "value2"

2) "value1"

127.0.0.1:6379> sunionstore store set1 set2

(integer) 3

127.0.0.1:6379> smembers store

1) "value1"

2) "value2"

3) "value3"

smove

將第乙個集合的中value值移動到第二個集合中

如下:將set1的value3移動到set2中

127.0.0.1:6379> smembers set1

1) "value3"

2) "value2"

3) "value1"

127.0.0.1:6379> smembers set2

1) "value2"

2) "value1"

127.0.0.1:6379> smove set1 set2 'value3'

(integer) 1

127.0.0.1:6379> smembers set1

1) "value2"

2) "value1"

127.0.0.1:6379> smembers set2

1) "value3"

2) "value2"

3) "value1"

scard

返回乙個集合中元素的個數

如下:得到set1中的元素個數

127.0.0.1:6379> smembers set1

1) "value2"

2) "value1"

127.0.0.1:6379> scard set1

(integer) 2

sismember

檢視乙個值是否存在乙個集合中

127.0.0.1:6379> smembers set1

1) "value2"

2) "value1"

127.0.0.1:6379> sismember set1 'value1'

(integer) 1

127.0.0.1:6379> sismember set1 'value3'

(integer) 0

從上面可以看出,value1是set1中的,而value3不是set1中的

srandmember

隨機得到乙個集合中的值

127.0.0.1:6379> smembers set1

1) "value2"

2) "value1"

127.0.0.1:6379> srandmember set1

"value2"

127.0.0.1:6379> srandmember set1

"value2"

127.0.0.1:6379> srandmember set1

"value1"

Redis資料型別 SET

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

redis資料型別之set

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

redis資料型別之Set

1 設定和獲取127.0 0.1 6379 sadd set2 v1 v2 v3 v3 integer 3127.0 0.1 6379 smembers set2 無序不重複1 v1 2 v3 3 v2 127.0 0.1 6379 spop set2 彈出元素 v1 2 是否存在member127...