【Redis】set类型
目录
- 1、介绍
- 2、底层实现
- 【1】整数集合
- 【2】哈希表
- 3、常用指令
1、介绍
Redis的set集合类型是一种无序且元素唯一的数据结构,支持高效的成员判断、集合运算和随机访问。
2、底层实现
【1】整数集合
适用场景
当集合中所有的元素都是整数,且元素数量较少时(默认配置为 set-max-intset-entries 512)
实现特点
1、连续内存存储,类似数组,支持二分法查找
2、自动升级,当插入非整数或超出当前整数类型范围时,会转化为哈希表
【2】哈希表
适用场景
元素包含非整数,或元素数量超过intset阈值
实现特定
1、使用Redis的通用链式哈希结构,键为元素值,值为NULL。
2、自动扩缩容,通过rehash机制平衡性能与内存占用。
3、常用指令
命令 | 语法 | 作用 |
---|---|---|
SADD | SADD key member [member …] | 向集合key添加一个或多个成员,已存在的成员会被忽略 |
SREM | SREM key member [member …] | 从集合key移除一个或多个成员,不存在的成员会被忽略 |
SMEMBERS | SMEMBERS key | 返回集合key中所有成员(无序) |
SISMEMBER | SISMEMBER key member | 判断member是否是集合key的成员,返回1(存在)或0(不存在) |
SCARD | SCARD key | 返回集合key的成员数量 |
SPOP | SPOP key [count] | 随机移除并返回集合key中的一个或多个成员(默认1个) |
SRANDMEMBER | SRANDMEMBER key [count] | 随机返回集合key中的一个或多个成员 |
SMOVE | SMOVE source dest member | 将member从source集合移动到dest集合(原子操作) |
SINTER | SINTER key [key …] | 返回多个集合的交集 |
SUNION | SUNION key [key …] | 返回多个集合的并集 |
SDIFF | SDIFF key [key …] | 返回第一个集合与其它集合的差值(即key1有而其他集合没有的成员) |
SINTERSTORE | SINTERSTORE dest key [key …] | 计算多个集合的交集并存储到dest |
SUNIONSTORE | SUNIONSTORE dest key [key …] | 计算多个结合的并集并存储到dest |
SDIFFSTORE | SDIFFSTORE dest key [key …] | 计算多个集合的差集并存储到dest |
SSCAN | SSCAN key cursor [MATCH pattern] [COUNT count] | 增量迭代集合中的成员 |