1. 程式人生 > >redis無序集合set型別詳解

redis無序集合set型別詳解

redis中的set是string型別的無序集合,set元素最大可以包含2的32次方-1個元素。利用set集合型別,我們可以快速取出n個key之間的並集、交集、差集等,從而輕鬆解決mysql等資料庫不容易實現這種運算的缺陷。

與上篇中list型別不同的是,set集合不允許出現重複的元素,因此set型別也可以快速判斷某一元素是否存在。

應用場景:取出兩個QQ號中的共同的好友數;判斷某個ip是否在白名單內等。

以下是無序集合型別(set)的一些常用操作命令:

1.【 sadd key vaule 】 往集合中插入一個元素,如果value值已存在集合中,則返回0,不會被重複插入。

2.【 sinter key1 key2 ... keyN 】 取出n個key之間的交集。比如 key1裡面有值a,b,c,d,e,key2裡面有d,e,f,sinter key1 key2返回d,e。

3.【 sunion key1 key2 ... keyN 】 取出n個key之間的並集。比如 key1裡面有值a,b,c,d,e,key2裡面有d,e,f,sunion key1 key2返回a,b,c,d,e,f。

4.【 sdiff  key1 key2 】 取出n個key之間的差集。比如 key1裡面有值a,b,c,d,e,key2裡面有d,e,f,sdiff key1 key2返回a,b,c;反過來sdiff key2 key1返回f。

5.【 smembers key 】 返回key集合中所有的元素,結果是無序的。

6.【 sismember key value 】 檢視value這個值是否在key集合中。存在返回1,不存在返回0。

7.【 scard key 】 返回集合中有多少個元素。

8.【 smove key1 key2 value 】 把value從key1中移到key2中去。

9.【 srem key value1 value2 ... valueN 】 從key集合中刪掉某些元素。

由上可見,合理的運用set型別,效率可以實現幾何倍增!