当前位置: 首页 > news >正文

Redis数据类型之set

上篇文章:

Redis数据类型之listhttps://blog.csdn.net/sniper_fandc/article/details/149139713?fromshare=blogdetail&sharetype=blogdetail&sharerId=149139713&sharerefer=PC&sharesource=sniper_fandc&sharefrom=from_link

目录

1 sadd、smembers和sismember

2 spop和srandmember

3 smove和srem

4 sinter和sinterstore

5 sunion和sunionstore

6 sdiff和sdiffstore

7 set的使用场景


        set类型是集合,集合有两个重要的特性:1.集合中的元素不能重复。2.集合中的元素是无序的(一组数的所有排列的集合是同一个集合)。集合内部存储的是string类型,可以使用JSON格式来存储更复杂的string类型。

1 sadd、smembers和sismember

        命令:sadd key member1 member2 ...

        向key的集合中插入member1、member2等等元素。时间复杂度O(1),因为一般不会插入过多的元素,近似常数级时间复杂度。返回值插入成功的个数。

        命令:smembers key

        查询key的集合中的所有元素。时间复杂度O(N),N表示集合中元素的个数。返回值集合中的所有元素。

        命令:sismember key member

        判断member是否是key的集合中的元素。时间复杂度O(1)。返回值0表示不存在,1表示存在。

2 spop和srandmember

        命令:spop key [count]

        随机删除key的集合中的一个元素,如果带参数count,就删除count个。时间复杂度O(N),N表示count。返回值是删除的元素。

        命令:srandmember key [count]

        随机获取key的集合中的一个元素,如果带参数count,就获取count个。时间复杂度O(N),N表示count。返回值是获取的元素。

3 smove和srem

        命令:smove source destination member

        把source的集合中的member移动到destination的集合中。时间复杂度O(1)。返回值1或0,0表示要移动的元素不存在在source,1表示移动成功或member已经存在destination的集合中(此时该元素仍然会从)source的集合中移除。

        命令:srem key member1 member2 ...

        移除key的集合中的指定元素。时间复杂度O(N),N表示移除元素的个数。返回值也是成功移除元素的个数。

4 sinter和sinterstore

        命令:sinter key1 key2 ...

        求集合的交集。时间复杂度O(N*M),N是最小集合的大小,M是最大集合的大小。返回值是交集中的元素。

        命令:sinterstore destination key1 key2 ...

        求集合的交集,并把交集存储在destination键对应的集合中。时间复杂度O(N*M),N是最小集合的大小,M是最大集合的大小。返回值是交集中的元素个数。

5 sunion和sunionstore

        命令:sunion key1 key2 ...

        求集合的并集。时间复杂度O(N),N是所有集合的元素个数之和。返回值是并集中的元素。

        命令:sunionstore destination key1 key2 ...

        求集合的并集,并把并集存储在destination键对应的集合中。时间复杂度时间复杂度O(N),N是所有集合的元素个数之和。返回值是并集中的元素的个数。

6 sdiff和sdiffstore

        命令:sdiff key1 key2 ...

        求集合的差集(注意A对B的差集是A有B没有的元素,B对A的差集是B有A没有的元素)。时间复杂度O(N),N是所有集合的元素个数之和。返回值是差集中的元素。

        命令:sdiffstore destination key1 key2 ...

        求集合的差集,并把差集存储在destination键对应的集合中。时间复杂度O(N),N是所有集合的元素个数之和。返回值是差集中的元素的个数。

7 set的使用场景

        set可以用来保存用户的标签,利用标签构建用户画像,从而进行按兴趣推荐等等。也可以计算两个用户标签的交集,从而得到用户之间的相似度,进而得到用户之间的关系。比如公共好友的计算。

        用set还可以去重,尤其是对于网站访问量的统计:PV(page view每访问一次服务器PV+1)和UV(user view每有一个用户访问一次服务器UV+1)的统计。上述过程中UV就需要去重,因为一个用户多次访问服务器,UV只增加1个单位。

下篇文章:

http://www.dtcms.com/a/276486.html

相关文章:

  • 巅峰对决:文心4.5 vs DeepSeek R1 vs 通义Qwen3.0——国产大模型技术路线与场景能力深度横评
  • flowable或签历史任务查询
  • C++ Primer(第5版)- Chapter 7. Classes -001
  • 基于Java Web的二手房交易系统开发与实现
  • 利用docker部署前后端分离项目
  • 【QT】多线程相关教程
  • Linux中使用快捷方式加速SSH访问
  • 通俗范畴论13 鸡与蛋的故事番外篇
  • 2D转换之缩放scale
  • 《P2052 [NOI2011] 道路修建》
  • JavaScript:移动端特效--从触屏事件到本地存储
  • (LeetCode 面试经典 150 题 )3. 无重复字符的最长子串 (哈希表+双指针)
  • 两数之和 https://leetcode.cn/problems/two-sum/description/
  • 基于hugo的静态博客站点部署
  • 苹果公司高ROE分析
  • Druid 连接池使用详解
  • 基于 SpringBoot+Uniapp 易丢丢失物招领微信小程序系统设计与实现
  • BugBug.io 使用全流程(202507)
  • Kubernetes持久卷实战
  • zcbus使用数据抽取相当数据量实况
  • 8. JVM类装载的执行过程
  • hive的索引
  • DBeaver连接MySQL8.0报错Public Key Retrieval is not allowed
  • C语言基础知识--位段
  • UE制作的 AI 交互数字人嵌入到 Vue 开发的信息系统中的方法和步骤
  • 【MaterialDesign】谷歌Material(Google Material Icons) 图标英文 对照一览表
  • AI问答:成为合格产品经理所需能力的综合总结
  • dify工作流1:快速上手ai应用
  • 计算机毕业设计Java停车场管理系统 基于Java的智能停车场管理系统开发 Java语言实现的停车场综合管理平台
  • 网络通信模型对比:OSI与TCP/IP参考模型解析