Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是0(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
Set无序集合 | |
添加一个元素 | >sadd myset2 one 向myset1集合添加一个元素“one” 返回:成功返回1,失败返回0 注: 1.集合中的元素值是唯一的(不允许重复,也没有重复) |
查看某一集合所有元素 | >smembers myset2 查看myset2集合中所有元素 返回:返回当前集合所有元素 |
随机返回集合中一个元素 | >srandmember myset1 随机读取一个myset1集合中的元素 |
判断某集合中是否存在某个元素 (判断某元素是否存在于集合中) |
>sismember myset1 four 判断myset1中是否存在“four”这个元素。即:判断“four”是否是myset1中的元素 返回:存在返回1,不存在返回0 |
获取集合中元素总个数 | >scard myset1 返回集合中的元素总个数; |
获取第一个集合与其后若干集合的差集 sdiff = set difference ['dɪfrəns] |
>sdiff myset1 取myset1与一个空集合的差集(其实仍为自身,同smembers myset1效果) >sdiff myset1 myset2 取myset1与myset2的差集 >sdiff myset1 myset2 myset3 取myset1与myset2、myset3的多个集合的差集 |
获取差集,并将结果存储到前面的集合中 | >sdiffstore mySetDiff myset1 myset2 获取myset1与myset2的差集,并将结果存储到前面的mySetDiff中 返回:返回新集合mySetDiff的元素个数 |
获取第一个集合与其后若干集合的交集 sinter = set intersection[ˌɪntə'sekʃn] |
>sinter myset1 获取myset1与一个空集的交集(其实仍为自身,同smembers myset1效果) >sinter myset1 myset2 1) "four" 2) "three" 3) "two" 获取myset1与myset2的交集 >sinter myset1 myset2 myset3 1) "three" 获取myset1与myset2、myset3的多个集合的交集 |
获取交集,并将结果存储到前面的集合中 | >sinterstore mySetInter myset1 myset2 获取myset1与myset2的交集,并将结果存储到前面的mySetInter中 返回:返回新集合mySetDiff的元素个数 |
获取第一个集合与其后若干集合的并集 | >sunion myset1 获取myset1与一个空集合的并集 (其实仍为自身,同smembers myset1效果) >sunion myset1 myset2 获取myset1与myset2的并集 >sunion myset1 myset2 myset3 获取myset1与myset2、myset3的多个集合的并集 |
获取并集,并将结果存储到前面的集合中 | >sunionstore mySetUnion myset1 myset2 myset3 获取myset1与myset2、myset3的并集, 并将结果存储到前面的mySetUnion中 返回:返回新集合mySetUnion的元素个数 |
移动元素:从前一集合向后一集合移动一个元素 | >smove myset1 myset2 two 从myset1移动到myset2中一个值为“two”元素; 如果被移除的元素在myset1中不存在,返回0,否则返回1; 如果目标集合中已经存在“two”元素,则覆盖存储。 注:每次只能移动一个元素,成功返回1,失败返回0; |
删除指定若干元素 | >srem myset2 tom 删除一个元素tom >srem myset2 jack mary 删除多个元素jack 和 mary 返回实际被删除的元素个数 |
随机弹出(删除)一个元素 | >spop myset2 返回:返回被弹出的元素值 |