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

【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.mrgr.cn/news/46466.html

相关文章:

  • docker 部署 MantisBT
  • git报错处理
  • 接上一主题,实现QtByteArray任意进制字符串转为十进制数
  • FPGA 21 ,深入理解 Verilog 中的基数,以及二进制数与十进制数之间的关系( Verilog中的基数 )
  • Python语言的编程范式
  • 稀疏子空间聚类 SSC(Sparse Subspace Clustering)
  • Java语言教程:打造你的第一款五子棋游戏 JAVA学习攻略心得总结
  • docker k8s mysql 命令行 sql 不能输入中文
  • 华为OD机试 - 处理器问题(Python/JS/C/C++ 2024 E卷 200分)
  • jvm垃圾收集器简介
  • 10.10 题目总结(累计)
  • Java数据类型常量
  • 【论文阅读】超分辨率图像重建算法综述
  • 【C语言】指针
  • 斯坦福 CS229 I 机器学习 I 构建大型语言模型 (LLMs)
  • 鹏哥C语言72---操作符与表达式求值
  • 【C/C++】错题记录(七)
  • 引领行业发展,大北互集团携手纷享销客共建营销数字化发展新引擎
  • 76.【C语言】perror函数介绍
  • Android设置边框圆角
  • xtu oj Balls
  • secure boot 部分知识
  • 20.安卓逆向-frida基础-hook分析调试技巧2-hookDES
  • web1.0,web2.0,web3.0 有什么区别 详解
  • Linux deepin系统通过编辑crontab来设置定时任务---定时关机
  • 使用pycharm的sftp功能远程操控服务器的时候,遇到了一些问题:Local path ’ ’ is outof project