1. 程式人生 > >redis之sets類型及操作

redis之sets類型及操作

redis

sets類型及操作
set是集合,和我們數學中的集合概念相似,對集合的操作有添加刪除元素,有對多個集合求交並差等操作,操作中key理解為集合的名字。
set的是通過hash table實現(即set並沒有順序)的,所以添加、刪除和查找的復雜度都是O(1)。hash table會隨著添加或者刪除自動的調整大小。需要註意的是調整hash table大小時候需要同步(獲取寫鎖)會阻塞其他讀寫操作,可能不久後就會改用跳表(skip list)來實現,跳表已經在sorted set中使用了。關於set集合類型除了基本的添加刪除操作,其他有用的操作還包含集合的取並集(union),交集(intersection),差集(difference)。通過這些操作可以很容易的實現sns中的好友推薦和blog的tag功能。

sadd
向集合set中添加指定元素.
如:sadd myset "hello"
srem
刪除set中的指定元素
如:srem myset “hello”
spop
隨機刪除set中元素並返回此數據
sdiff
返回set1在set2中沒有的元素.
如:sdiff set1 set2
sdiffstore
返回set1在set2中沒有的元素,並存儲到另一個set中.
如:sdiff set1 set2 set3
smembers
查看Set元素
如:smembers set1
sinter
返回指定的set(多個)的交集
如:sinter set1 set2 set3

sinterstore
返回指定的set(多個)的交集並保存為另一個set。
sunion
返回所有給定set的並集
如:sunion set1 set2 set3
sunionstore
返回所有給定set的並集,並存儲為另一個set
smove
從第一個set中移除member並添加到第二個對應set中
如:smove myset2 myset7 member
scard
返回set的元素個數
sismember
測試member是否是set的元素
srandmember
隨機返回set的一個元素,但是不刪除元素

redis之sets類型及操作