本文最后更新于19 天前,其中的信息可能已经过时,如有错误请留言
Set适合无序集合场景,比如某个用户关注了哪些公众号(公众号不需要排序) ,另外Set还提供了查询并集和交集和功能,可以方便地实现两个用户共同关注的公众号等功能。
一、Set的语法
SADD key member [member …] | 添加元素 |
SREM key member [member …] | 删除元素 |
SISMEMBER key member | 查询元素是否存在 |
SCARD key | 查询元素个数 |
SMEMBERS key | 查询集合的所有元素 |
SSCAN key cursor [MATCH pattern][COUNT count] | 查看集合元素 |
SINTER key [key …] | 返回集合交集 |
SUNION key [key …] | 返回集合并集 |
SDIFF key [key …] | 返回第一个集合存在,且后续集合不存在的元素 |
二、Set的底层实现
INTSET编码
如果集合元素都是整数,且元素数量不超过512个,使用INTSET编码
INTSET排列紧凑,占用内存小,但是需要二分法来查找
HASHTABLE编码
不符合INTSET的条件时,使用HASHTABLE
由于是用哈希表,能在O(1)时间内找到元素是否存在