【Redis】Set类型的常用命令与应用场景

目录

1.命令小结

2.命令解析

3.编码方式与应用场景


 

1.命令小结

(1)set的特点

1)set中存放的数据也都是String类型

2)set集合中的元素是无须的

3)set集合中的元素是唯一的,不可重复

(2)命令大全

命令含义时间复杂度
sadd key element [element … ]向set添加一个获多个元素
O(k),k 是元素个数
smembers key获取集合的所有元素
O(k),k 是元素个数
sismember key element判断一个元素是否在set中O(1)
scard key求集合中元素个数O(1)
spop key [count]随机删除并获取元素
O(n),n 是count
srandmember key [count]随机获取元素
O(k),n 是count
smove sourse destination member将元素从一个集合中移到另一个集合O(n),n 是count
srem key member [member …]移除指定元素O(N)
sinter key1 [key2 … ]求交集
O(m * k),k是几个集合中元素最小的个数,m是键个数
sinterstore destination key1 [key2 …]求交集并放入指定集合中
O(m * k),k是几个集合中元素最小的个数,m是键个数
sunion key1 [key2 … ]求并集O(k),k是多个集合的元素个数总和
sunionstore destination key1 [key2 …]求并集并放入指定集合中O(k),k是多个集合的元素个数总和
sdiff  key1 [key2 … ]求差集
O(k),k是多个集合的元素个数总和
sdffstore destination key1 [key2 …]求差集并放入指定集合中
O(k),k 是多个集合的元素个数总和
2.命令解析

(1)sadd

1)语法:sadd key member [member … ]

2)含义:将一个或者多个元素添加到key对应的set集合中。重复元素无法添加进去

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

4)时间复杂度:O(1)

(2)smembers

1)语法:smembers key

2)含义:获取key对应的set集合列表

3)返回值:返回set中的所有元素,顺序随机

4)时间复杂度:O(N),N为元素个数

(3)sismember

1)语法:sismember key member 

2)含义:判断一个元素是否存在key对应的set中

3)返回值:1表示存在,0表示key或者member不存在

4)时间复杂度:O(1)

(4)scard

1)语法:scard key

2)含义:获取key对应集合中的元素个数

3)返回值:返回set中的元素个数

4)时间复杂度:O(1)

(5)spop

1)语法:spop key [count]

2)含义:随机删除set中的元素,不写count默认删除一个;指定count则随机删除count个

3)返回值:删除的元素

4)时间复杂度:O(N),N是count

(6)srandmember

1)语法:srandmember key [count]

2)含义:随机从key对应的set集合中取出一个或者count个元素

3)返回值:返回取出的元素

4)时间复杂度:O(N),N是count

(7)smove

1)语法:smove source destination member

2)含义:将member元素从source对应的集合中取出放入destination中

3)返回值:1表示移动成功,0表示失败

4)时间复杂度:O(1)

(8)srem

1)语法:srem key member [member … ]

2)含义:将指定元素从key对应的集合中移除

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

4)时间复杂度:O(N),N为删除的个数

(9)并集、交集、差集概念

1)交集:两个集合求并集,结果为两个集合中都存在的元素

2)并集:两个集合求交集,结果为两个集合的所有元素相加,并去掉重复的元素,只留下一份

3)差集:A和B求差集,A在前面,则返回A中存在,但B中不存在的元素;B和A求差集,B在前面,则返回在B中存在,但A中不存在的元素

下面三个命令都是和上述概念相关的,也是set集合的特点所在

(10)sinter与sinterstore

  • sinter

1)语法:sinter key1 [key2 … ]

2)含义:获取指定集合的交集(可以一个或者多个集合)

3)返回值:交集的元素

4)时间复杂度:O(N*M),N是最小集合的元素个数,M是最大集合的元素个数

  • sinterstore

1)语法:sinterstore destination key1 [key2 … ]

2)含义:获取到的交集元素存放到destination集合中

3)返回值:交集的元素

4)时间复杂度:O(N*M),N是最小集合的元素个数,M是最大集合的元素个数

(11)sunion与sunion

  • sunion 

1)语法:sunion key1 [key2 … ]

2)含义:获取给定set的并集中的元素

3)返回值:并集的元素

4)时间复杂度:O(N),N给定的所有集合的总的元素个数

  • sunionstore

1)语法:sunionstore destination key [key … ]

2)含义:获取给定set的并集中的元素并且保存到目标set中

3)返回值:并集的元素个数

4)时间复杂度:O(N),N给定的所有集合的总的元素个数

(12)sdiff与sdiffstore

  • sdiff 

1)语法:sdiff key [key … ]

2)含义:获取给定set的差集中的元素

3)返回值:差集的元素

4)时间复杂度:O(N),N是给定的所有集合的总的元素个数

  • sdiffstore

1)语法:sdiffstore destination key [key … ]

2)含义:获取给定set的差集中的元素并且保存到目标set中

3)返回值:差集的元素个数

4)时间复杂度:O(N),N是给定的所有集合的总的元素个数

3.编码方式与应用场景

(1)编码方式

set内部主要有两种编码方式,分别是intset(整数集合)和hashtable(哈希表)

  • intset

当set集合中的元素都为整数时,编码方式为intset,可以减少内存的使用

  • hashtable

不是intset时,编码方式就为hashtable

(2)应用场景1---保存用户标签

这方面也就是用set来保存用户的特征,从而分析出“用户画像”,进而更方便给用户推荐相应的产品。

(3)应用场景2---计算用户之间的公共好友

利用set中元素的唯一性,多个集合之间求并集,就能推算出用户之间的公共好友。

(4)应用场景3---统计UV

UV也就是用户访问服务器后产生的痕迹,痕迹+1,同一个用户多次访问同一个服务器不会使UV增加

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RISC-V开发 linux下GCC编译自定义指令流程笔记

第一步:利用GCC提供了内嵌汇编的功能可以在C代码中直接内嵌汇编语言 第二步:利用RSIC-V的中的.insn模板进行自定义指令的插入 第三步:RISC-V开发环境的搭建 C语言插入汇编 GCC提供了内嵌汇编的功能可以在C代码中直接内嵌汇编语言语句方便了…

在树莓派上部署安装OAK

OAK设备可以与微型主机(例如树莓派)进行连接,在树莓派上安装DepthAI, 需要安装相关依赖Dependencies并且可以通过pip安装Depthai Library. DepthAI Library 在PyPi上对树莓派有预构建的 wheels 使用预配置的树莓派OS 镜像 我们提供预安装了D…

期权懂|面对期权下跌该如何操作呢?

本期让我懂 你就懂的期权懂带大家来了解,面对期权下跌该如何操作呢?有兴趣的朋友可以看一下。期权小懂每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 面对期权下跌该如何操作呢? 首先我们需要保持冷静…

Zotero插件指南:20个工具让你的学术生活更简单

以下插件排序按照星标量进行排序,常用的插件大概是前20的样子,可以根据自己的需求进行插件的安装。 顺带提一句,插件不是越多越好,装多了可能会出现软件卡顿的情况。 1、Scholaread for Zotero 插件下载:插件下载 …

Linux文件权限与用户管理详解:权限、所属用户组和所有者的变更

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

HTB:Markup[WriteUP]

目录 连接至HTB服务器并启动靶机 1.What version of Apache is running on the targets port 80? 2.What username:password combination logs in successfully? 使用Yakit并使用TOP1000字典对密码进行爆破 3.What is the word at the top of the page that accepts use…

以光塑形:光固化3D打印机原理图文解析

公众号端: 光固化打印机介绍https://mp.weixin.qq.com/s?__bizMzkwMjc0MTE3Mw&mid2247484073&idx1&sn0d0fd026b373b06cd7c340ec8f56a006&chksmc0a1af73f7d62665a632baebbde4e5e00ffb9c6bd31bf547b4a86855d5524535619a6175a428#rd 光固化打印机…

前端面试:项目细节重难点问题分享(17)

更多详情:爱米的前端小笔记(csdn~xitujuejin~zhiHu~Baidu~小红shu)同步更新,等你来看!都是利用下班时间整理的,整理不易,大家多多👍💛➕🤔哦!你们…

SpringSession;基于Redis的SpringSession实现;实现session共享的三种方式

一,SpringSession简介 是SpringCloud下管理session的框架,在微服务架构中,由于应用了分布式的思想,session无法做到内存中互通,需要一个框架来实现各个微服务中session数据共享,SpringSession解决了这个问题…

C++语言学习(3): type 的概念

type 的概念 C中的变量拥有类型, 这是显然的。 实际上,每个 object, 每个 reference, 每个 function, 每个 expression , 都有对应的 type (类型): Each object, refer…

随机掉落的项目足迹:使用箭头函数时踩到的坑

这篇博客没有啥硬核知识,讲的是我遇到问题然后排错的过程,大家可以当故事看看 事情的起因是请求响应的对象打印出来竟然是undefined,但是network里却可以正常看到响应体 于是我把这个问题扔给了我队友,他改了我两处代码&#xff…

通信工程学习:什么是OSPF开放式最短路径优先

OSPF:开放式最短路径优先 OSPF(Open Shortest Path First,开放式最短路径优先)是一种内部网关协议(IGP),被广泛应用于计算机网络中,特别是在构建大型和复杂的网络时。以下是对OSPF的…

Linux-磁盘优化的几个思路

优化前先看看性能指标 I/O 基准测试 fio(Flexible I/O Tester)正是最常用的文件系统和磁盘 I/O 性能基准测试工具。这类工具非常用,了解即可 应用程序优化 应用程序处于整个 I/O 栈的最上端,它可以通过系统调用,来调…

Go基础学习11-测试工具gomock和monkey的使用

文章目录 基础回顾MockMock是什么安装gomockMock使用1. 创建user.go源文件2. 使用mockgen生成对应的Mock文件3. 使用mockgen命令生成后在对应包mock下可以查看生成的mock文件4. 编写测试代码5. 运行代码并查看输出 GomonkeyGomonkey优势安装使用对函数进行monkey对结构体中方法…

UEFI学习笔记(十):系统表与ACPI表的遍历

一、概述 在 UEFI 系统表中,有几个关键的表用于提供系统信息、服务和硬件抽象。这些表可以通过 EFI_SYSTEM_TABLE 访问,常见的 UEFI 系统表如下: 1、EFI_SYSTEM_TABLE (系统表) EFI_SYSTEM_TABLE 是一个指针,包含多个服务和系统…

docker-compose无法切换用户

问题描述 jupyter:image: flink:1.19-pyprivileged: trueuser: rootports:- "9999:8888"volumes:- /data/docker_data/jupyter:/workcommand: sh -c "cd / && jupyter notebook --ip 0.0.0.0 --port 8888 --allow-root --NotebookApp.passwordsha1:658…

『网络游戏』动态界面制作创建角色UI【02】

将上一章的登录界面隐藏 创建空物体重命名为CreateWnd 自适应铺满父物体 创建image重命名为bg并铺满 将以下资源图片放进Art文件夹 设置为精灵模式 填充背景 创建介绍Image面板与角色按钮 制作将3D模型动态防止UI界面上 首先创建RawImage 创建RenderTextures文件夹 创建Render…

数字王国里的虚拟人――技术、商业与法律解读

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【海拥导航】🤟 找工作,来万码优才:👉 #小程序://万码优才/HDQZJEQiCJb9cFi💅 想寻找共同学习交流,摸鱼划水的小伙伴,请点击【全栈技…

DS1302时钟模块(STM32)

目录 一、介绍 二、模块原理 1.原理图 2.引脚描述 3.工作原理:读/写时序 4.寄存器地址/定义 三、程序设计 main.c文件 ds1302.h文件 ds1302.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 DS1302是一款由达拉斯半导体(Dallas Semic…

第三方软件测评机构简析:软件安全测试报告的内容和作用

随着数字化时代的到来,软件的安全性显得尤为重要。尤其在信息安全事件频发的今天,软件安全测试报告成为企业和开发者关注的焦点。软件安全测试报告是评估软件系统安全性的一种综合性文档,通常在软件开发生命周期中进行安全性测试后生成。 软…