首页 > 数据库 >Redis笔记——对象之 SET

Redis笔记——对象之 SET

时间:2024-06-01 21:28:27浏览次数:34  
标签:... SET 元素 Redis 笔记 查询 key 集合 INTSET

是什么?

        Redis 的 Set 是一个无序的不重复的集合字符串集合。

        如果底层数据编码为 INTSET,其实是有序的,不过不推荐依赖这个,整体还是看作无序来使用为好。

场景

        无序集合场景。如关注了那些公众号,Set 提供了查交集、并集的功能,可以很方便的实现共同关注功能。

常用操作

创建:
    SADD key member[member...] 添加/修改元素,并返回成功添加元素个数

查询:
    SISMEMBER key member 查看元素是否存在
    SCARD key 查询集合元素个数
    SMEMBERS key 查看集合所有元素
    SSCAN key cursor [MATCH pattern] [COUNT count] 指定游标查询集合元素
        可以指定个数,默认为10。返回结果中第一行为下一次查询要使用的游标,为0则表示已查询全部数据
        例:从0号位查询集合 setjelly 的数据
            127.0.0.1:6379> SSCAN setjelly 0
            1) "0"
            2) 1) "JJ"
               2) "EE"
               3) "LL"
               4) "YY"
    SINTER key [key ...] 查询在第一个集合中,且在后续所有集合中的数据
    SUNION key [key ...] 查询集合并集,集合数要大于等于2
    SDIFF key [key ...] 查询在第一个集合中存在,在后续集合中不存在的数据,集合数要大于等于2
    
更新:
    SADD key member[member...] 添加/修改元素,并返回成功添加元素个数
    SREM key member[member...] 删除元素,并返回成功删除元素个数
    
删除:
    SDEL key [key ...] 删除对象,返回成功删除的键的个数

底层实现

编码方式

        出于性能考虑,Set 也支持两种编码方式,分别是 INTSET、HASHTABLE。

        如果集合元素都是整数,且数量不超过512个,使用 INTSET 编码方式。

        如果不满足 INTSET 编码方式要求,则使用 HASHTABLE 编码方式。

  • INTSET

        INTSET排列紧凑,内存占用较少,查询时需使用二分查找。

  • HASHTABLE

        HASHTABLE查询一个元素的性能很高,能在O(1)时间就确认一个元素是否存在。

总结

        Redis 的 Set 对象可以很方便的管理无序集合,还可以对多个集合求交集、并集、差集。底层编码方式有两种,INTSET少量整数集合时使用以节约内存HASHTABLE 适用于需要快速定位某个元素的场景

标签:...,SET,元素,Redis,笔记,查询,key,集合,INTSET
From: https://blog.csdn.net/Jellylove0511/article/details/139379913

相关文章

  • 动手学深度学习4.6 暂退法-笔记&练习(PyTorch)
    以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。本节课程地址:丢弃法_哔哩哔哩_bilibili本节教材地址:4.6.暂退法(Dropout)—动手学深度学习2.0.0documentation(d2l.ai)本节开源代码:...>d2l-zh>pytorch>chapter......
  • CLLM4Rec论文阅读笔记
    CollaborativeLargeLanguageModelforRecommenderSystems论文阅读笔记Abstract提出存在的问题:​ 自然语言和推荐任务之间的语义差距仍然没有得到很好的解决,导致了多个问题,如用户/项目描述符的虚假相关、对用户/项目数据进行的语言建模无效、通过自动回归的低效推荐。解决......
  • 今日指数day01学习笔记
    1、项目概述    该项目是基于股票实时交易的数据分析产品,为用户和机构提供个性化的股票数据分析和展示服务    核心功能:数据分析和展示为主,功能涵盖了A股大盘实时指数展示、涨幅榜、个股涨跌、个股秒级行情、实时日K线行情等2、股票相关名词    股......
  • 为bufdataset增加ftVariant支持
    最近使用bufdataset时发现可以创建ftVariant类型,但无法正常读写。经搜索,发现fpc官方早在2011年就有解决方案,但到今天最新的fpc3.3.1还没支持,按issues的方法,经测试读写ok,如果你也需要在bufDataSet要用到ftVariant,可以参考以下方法:打开fpcsrc\packages\fcl-db\src\base\bufdataset.......
  • Redis笔记——底层数据结构之压缩列表
    是什么?        本质上就是紧凑的列表。        压缩列表在Redis中有两种编码方式,分别是ZIPLIST与LISTTPACK。LISTPACK从Redis5.0引入,直至Redis7.0完全替换了ZIPLIST,可以看作是ZIPLIST的进阶版。有什么作用?        在List文章中,提......
  • STM32学习笔记(二)流水灯
    STM32学习笔记(二)流水灯一、原理部分1.1LED原理1.2GPIO原理二、工程部分三、加入宏定义这次我们来实现LED流水灯成为点灯大师。使用的核心板的MCU型号为STM32F103ZET6,使用标准库函数来实现。一、原理部分1.1LED原理其中PWR是系统电源指示灯,为蓝色。LED0......
  • 《C++primer》读书笔记---第九章:顺序容器
    9.1顺序容器概述下表列出了标准库的顺序容器,所有容器都提供了快速顺序访问元素的能力:多种容器中,通常使用vector是最好的选择,除非你有很好的理由选则其他容器。以下是一些选择容器的基本原则:除非你有很好的理由选择其他容器,否则选择vector如果你的程序有很多小的元素,且空......
  • 【Python爬虫--scrapy+selenium框架】超详细的Python爬虫scrapy+selenium框架学习笔记
    六,selenium想要下载PDF或者md格式的笔记请点击以下链接获取python爬虫学习笔记点击我获取Scrapy+selenium详细学习笔记点我获取Python超详细的学习笔记共21万字点我获取1,下载配置##安装:pipinstallselenium##它与其他库不同的地方是他要启动你电脑上的浏览器......
  • 【Python--openCV图像处理】Python学习-OpenCV图像处理基础超详细的学习笔记(黑马程序
    一,openCV基础说明:笔记是跟着B站黑马程序员的openCV课程时做的课程资料可以在黑马程序员评论区获取1,图像基本操作1-1图像基础操作1-1-1安装相关库pipinstallopencv-pythonpipinstallopencv-contrib-python##尽量保持两个库安装的版本,比如我都是4.9.0.80ope......
  • Solution Set before NOI2024
    前情提要:省选太唐没进队,现在是菜D。「ARC175E」ThreeViewDrawing原神。考虑令\(m\)为\(\sqrtk\)向上取整。那么有\(m^2-2m+1<k\lem^2\)。考虑一种能够覆盖某个视图一个角的做法,那么直接覆盖两个角,中间留一条缝,或是宽度为\(2\)的缝(这种情况下有可能有奇偶性的问题,但......