目录
Set
命令小结
命令 | 功能 | 时间复杂度 |
sadd key element [element...] | 向集合添加元素 | O(k), k是元素个数 |
srem key element [element...] | 删除集合中的元素 | O(k), k是元素个数 |
scard key | 求集合中的元素数目 | O(1) |
sismember key element | 判断一个元素是否在集合内 | O(1) |
srandmember key [count] | 在集合中随机获取count个元素 | O(count) |
spop key [count] | 在集合中随机删除count个元素 | O(count) |
smembers key | 获取集合中的所有元素 | O(k), k是元素个数 |
sinter key [key...] sinterstore | 求多个集合的交集 | O(m * k) |
sunion key [key...] sunionstore | 求多个集合的并集 | O(k), k是多个集合元素个数的总和 |
sdiff key [key...] sdiffstore | 求多个集合的差集 | O(k), k是多个集合元素个数的总和 |
内部编码
集合中的内部编码有两种:
intset(整数集合): 当集合中的元素都是整数并且元素的个数小于set-max-intset-entires配置时, Redis会选用intset来作为集合的内部实现, 从而减少内存的使用.
hashtable(哈希表): 当集合类型无法满足intset的条件时, Redis会使用hashtable作为集合的内部实现.
使用场景
用户画像
集合类型比较典型的使用场景就是用户画像, 例如在抖音中, 用户A对美女跳舞, 唱跳rap篮球感兴趣, 用户B对历史, 二次元游戏感兴趣, 那么这些特征就会被记录为用户画像, 这些数据对提升用户体验和用户黏度就非常有帮助.
其它
在社交软件中查找共同好友. 以及互联网产品中衡量用户量, 用户规模非常有帮助(主要是按照浏览量等指标来确定, 如果同一个用户多次访问, 就会去重访问信息, 这样有助于准确地提供用户规模等信息).