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...