特性
Set是无序且不可重复
一个集合最多可以存储 2 ^ 32 - 1 个元素
使用场景:
-
标签
-
共同好友
-
兴趣&爱好
-
网页uv(独立访客数)统计
-
-
统计每天的新增用户数
-
key以user:id 以及当天日期,例如 user:uid:20220905; value为Set集合,记录当天登录的用户ID
-
-
排行
-
热点话题
-
点赞排行
-
...
-
-
黑白名单
存储结构
inset
使用场景
当集合对象同时满足以下两个条件时,对象使用inset编码:
-
集合对象保存的所有元素都是整数值
-
集合对象保存的元素数量不超过512个(默认值,配置参数set-max-intset-entries可以修改)
原理分析1
intset的核心是一个字节数组,按照从小到大存放着set元素
-
encoding:每个元素的编码方式,编码方式指定了一个整数元素占用多少个contents数组位
-
int16_t 2个字节,16位的整数,范围相当于java 的 short 类型
-
int32_t 4个字节,32位的整数,范围相当于java 的 int 类型
-
int64_t 8个字
-