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

相关推荐
好奇龙猫2 小时前
【日语学习-日语知识点小记-日本語体系構造-JLPT-N2前期阶段-第一阶段(13):単語文法】
学习
冼紫菜2 小时前
Claude整理的Dify平台学习教程资源
后端·学习·ai·llm·agent·dify
像豆芽一样优秀2 小时前
Easy-Vibe Task03学习笔记
笔记·学习
Rsingstarzengjx2 小时前
【Photoshop从入门到精通】 A17 修饰修复 笔记
笔记
im_AMBER2 小时前
Leetcode 124 二叉搜索树的最小绝对差 | 二叉树的锯齿形层序遍历
数据结构·学习·算法·leetcode·二叉树
好好学习天天向上~~2 小时前
11_Linux学习总结_环境变量
linux·学习
Purple Coder3 小时前
Pytorch框架
学习
EmbedLinX3 小时前
嵌入式Linux根文件系统制作与移植
linux·服务器·笔记·学习
知识分享小能手4 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019 存储过程与自定义函数 — 语法知识点及使用方法详解(15)
数据库·学习·sqlserver