五、Redis 基礎命令---無序集合,redis命令---集合

來源:互聯網
上載者:User

五、Redis 基礎命令---無序集合,redis命令---集合
1、集合中的每個元素都是唯一的,沒有順序的。
2、集合與列表的對比      


集合 列表
儲存內容 最多 2^32-1個字串 最多 2^32-1個字串
有序性 無序 有序
唯一性 唯一 不唯一

3、集合內部使用的是值為空白的散列表實現,所以向集合中插入、刪除、判斷元素是否存在操作的時間複雜度都是O(1)
4、SADD key member1 member2...添加元素,可以同時添加多個
     127.0.0.1:6379> SADD setA 1 2 3 4          (integer) 4

5、SMEMBERS key 擷取所有資料          127.0.0.1:6379> SMEMBERS setA
1) "1"
2) "2"
3) "3"
                4) "4"
6、SREM key value1 value2 刪除資料 ,返回刪除的個數          127.0.0.1:6379> SMEMBERS setA
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> SREM setA 1 2
               (integer) 2
7、SISMEMBER key member 判斷是否存在,返回1表示存在,返回0表示不存在          127.0.0.1:6379> SMEMBERS setA
1) "3"
2) "4"
127.0.0.1:6379> SISMEMBER setA 3
(integer) 1
127.0.0.1:6379> SISMEMBER setA 4
               (integer) 1        127.0.0.1:6379> SISMEMBER setA 5
               (integer) 0
8、集合間運算          SDIFF key1 key2 key3... 差集          SINTER key1 key2 key3 ......交集          SUNION key1 key2 key3......並集
9、SRANDMEMBER 隨機擷取一個元素           SRANDMEMBER set count               如果count值為正數時,會從集合中隨機擷取 count 個不重複的元素,如果count值大於集合size ,則返回所有元素          如果count值為負數時,從集合中隨機擷取 |count|個元素, 這些元素有可能相同原理:     SRANDMEMBER 返回的元素並不是非常的隨機,出現這種情況是由集合類型採用的儲存結構(散列表即hash)造成的。     散列表採用散列函數將元素映射到不同的儲存桶(bucket)上以實現O(1)的時間複雜度的元素尋找。舉個例子,當散列表格儲存體元素B時,計算b的散列值是0,就會把元素B儲存到0號bucket上。下次get元素時,使用同樣的演算法計算出b的散列值是0,直接去0號bucket上讀取元素。如果遇到了元素衝突,即多個元素的散列值相同,集合採用拉鏈法解決衝突,將散列值衝突的元素以鏈表的形式存入同一個桶中,尋找元素時先找到對應元素的桶,然後再在鏈表中找到相應的元素。     SANDMEMBER 命令是隨機擷取一個bucket,然後再在對應的鏈表中隨機擷取一個元素。所以元素所在的桶中元素越少,被隨機選中的可能性越大。     其實HashMap的原理也同上。          
10、SPOP 隨機從集合中彈出一個元素
     









     

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.