redis学习笔记(五)—— set 数据类型

前言

集合类型 保存多个字符串类型的元素;

与list 列表不同,集合中 元素之间是无序的并且元素不允许重复。

redis除了支持集合内的增删查改之外,还支持多个集合取交集、并集、差集等操作。

基本命令

  • sadd

    sadd key member [member...]

将一个或多个元素添加到set中;无法添加重复的元素

返回值:本次添加成功的元素个数

  • smembers

    smembers key

获取一个 set 列表中的所有元素

  • scard

    scard key

获取一个 set 列表中的元素个数

  • srem

    srem key member [member...]

删除 set 列表中的一个或者多个元素

返回值:删除成功元素的个数

  • spop

    spop key [count]

从set 中删除并返回一个或多个元素。

set 内部元素是无序的,所以具体取出哪一个元素是未定义行为,可以当做随机的

  • srandmember

    srandmember key [count]

随机返回 set 中的一个或多个元素

  • sismember

    sismember key member

判断 set 当中是否存在元素 member

返回值:1表示存在,0表示不存在

  • sinter、sunion、sdiff

    sinter key [key...]
    sunion key [key...]
    sdiff key [key...]

sinter 对多个 set 取交集并返回

sunion 对多个 set 取并集并返回

sdiff 对多个 set 取差集并返回

  • sinterstore、sunionstore、sdiffstore

    sinterstore destination key [key...]
    sunionstore destination key [key...]
    sdiffstore destination key [key...]

sinter、sunion、sdiff 都是将结果返回;而sinterstore、sunionstore、sdiffstore则是将结果放到 destination 目标key对应的 set 当中

sinterstore、sunionstore、sdiffstore则是将结果放到 destination 目标key对应的 set 当中

外链图片转存中...(img-DOHDNcXe-1770885014525)

内部编码

Redis Set 的内部编码主要有 intset 和 hashtable 两种。当集合中全是整数且元素数量比较少时,Redis 会使用 intset(整数集合),它以连续内存存储所有元素,采用二分查找,虽然时间复杂度为 O(log n),但内存占用极低,非常适合小规模整数集合场景。

一旦集合中混入非整数元素,或者元素数量比较多,Redis 就会自动将其编码切换为 hashtable(哈希表)。hashtable 支持任意类型元素,读写都是 O(1) 级别,通用性强,但内存开销也更大。需要注意的是,这种编码转换是单向的,即使后续删到只剩少量整数,也不会退回 intset。

本篇文章到这里就结束了,感谢支持

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2oul0hvapjsws

相关推荐
LinXunFeng2 天前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
用户3169353811834 天前
Java连接Redis
redis
通信小呆呆6 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick6 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee6 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
小小工匠6 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
Alsn866 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e6 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨6 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
闪闪发亮的小星星6 天前
高斯光以及高斯光公式解释
笔记