【Redis】set类型

目录

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] 增量迭代集合中的成员
相关推荐
嘻哈baby6 小时前
Redis高可用部署与集群管理实战
数据库·redis·bootstrap
Java爱好狂.8 小时前
Java面试Redis核心知识点整理!
java·数据库·redis·分布式锁·java面试·后端开发·java八股文
阿杆9 小时前
如何在 Spring Boot 中接入 Amazon ElastiCache
java·数据库·redis
此生只爱蛋14 小时前
【Redis】String 字符串
java·数据库·redis
青云交14 小时前
Java 大视界 -- 基于 Java+Flink 构建实时电商交易风控系统实战(436)
java·redis·flink·规则引擎·drools·实时风控·电商交易
破烂pan14 小时前
Python 整合 Redis 哨兵(Sentinel)与集群(Cluster)实战指南
redis·python·sentinel
SoleMotive.15 小时前
redis和mysql有什么区别,以及redis和mysql都有什么缺点,以及什么地方redis不如mysql?
数据库·redis·mysql
锥锋骚年15 小时前
golang 开发 Redis与Memory统一接口方案
开发语言·redis·golang
bafuka15 小时前
别再手撸热点缓存了:一个注解搞定Redis热点问题(已开源)
redis
程可爱16 小时前
详解Redis的五种基本数据类型(String、List、Hash、Set、ZSet)
redis