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

Redis命令 - Sets命令组常用命令

Set集合,无序,一堆不重复值的组合。利用redis提供的set数据结构,可以存储一些集合性的数据。

使用场景:例如,实现如共同关注、共同喜好、二度好友等

1、SADD key member [member …]

向集合中添加一个或者多个成员
1.1、如果集合key 不存在,则新建集合key。并添加member元素到集合key中。myset不存在,执行下面命令后,就创建了myset并且成员是0和1

sadd myset 0 1
在这里插入图片描述
重复的成员不会被添加进去。sadd myset 0 1 0 1 也只会添加进一个0和一个1
在这里插入图片描述

1.2、如果已经在集合key中存在则忽略.

sadd myset 0
sadd myset 1
sadd myset 3
成员0和1已经存在,因此返回0。成员3不存在,因此返回1
在这里插入图片描述

1.3、如果key的类型不是集合则返回错误.

sadd myhash 1
在这里插入图片描述

2、SCARD key

返回集合存储的key的基数 (集合元素的数量).

key存在,返回集合的基数(元素的数量)。key不存在,则返回 0.
scard myset
scard myset1
在这里插入图片描述

3、SMEMBERS key

返回key集合所有的元素。不会删除元素。

smembers myset
在这里插入图片描述

4、SRANDMEMBER key [count]

随机返回key集合中的一个元素或者count个元素。不会删除元素

例如:myset有3个元素:0 1 3

  • 如果count是整数且小于元素的个数,返回含有 count 个不同的元素的数组
    在这里插入图片描述

  • 如果count是个整数且大于集合中元素的个数时,仅返回整个集合的所有元素
    在这里插入图片描述

  • 当count是负数,则会返回一个包含count的绝对值的个数元素的数组
    在这里插入图片描述

  • 如果count的绝对值大于元素的个数,则返回的结果集里会出现一个元素出现多次的情况.
    在这里插入图片描述

以上是key存在的情况,会随机返回一个或者count个成员。当key不存在时,返回null
在这里插入图片描述

5、SPOP key [count]

从存储在key的集合中移除并返回一个或多个随机元素。会删除元素。

此操作与SRANDMEMBER类似,它从一个集合中返回一个或多个随机元素,但不删除元素。

spop myset
smembers myset
可见随机返回了一个成员3,并且删除了3
在这里插入图片描述

6、SMOVE source destination member

将member从source集合移动到destination集合中. 对于其他的客户端,在特定的时间元素将会作为source或者destination集合的成员出现.

6.1 先创建两个集合

sadd set1 0 1 2
sadd set2 1 2 3
在这里插入图片描述

6.2 source 集合不存在或者不包含指定的元素

smove命令不执行任何操作并且返回0.

smove set3 set2 2
smove set1 set2 4
在这里插入图片描述

6.3 source 集合存在且包含指定的元素

此成员将会从source集合中移除,并添加到destination集合中去。

smove set1 set2 0
smembers set1
smembers set2
在这里插入图片描述
如果destination集合已经存在该元素,则smove命令仅将该元素从source集合中移除
在这里插入图片描述

6.4 若source 和destination不是集合类型

则返回错误
在这里插入图片描述

7、SINTER key [key …]

返回指定所有的集合的成员的交集。例如推荐共同好友,拿到两个用户的好友列表,有交集,那就可以把用户A的其他好友推荐给用户B。例如向Bob推荐杨幂,向Tom推荐杨颖,因为他们都有共同的好友张大大。

例如:

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SINTER key1 key2 key3 = {c}

sadd key1 a b c d
sadd key2 c
sadd key3 a c e
sinter key1 key2 key3
在这里插入图片描述

如果key不存在则被认为是一个空的集合。当给定的集合为空的时候,结果也为空.(一个集合为空,结果一直为空).
在这里插入图片描述

8、SUNION key [key …]

返回给定的多个集合的并集中的所有成员.

例如:

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SUNION key1 key2 key3 = {a,b,c,d,e}

SUNION key1 key2 key3
SUNION key1 key2 key4
不存在的key可以认为是空的集合.
在这里插入图片描述

9、SDIFF key [key …]

返回一个集合与给定集合的差集的元素.

举例:

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}

返回key3与key1和key2的差集。
SDIFF key1 key2 key3 = {b,d}

注:是最后一个key跟前面几个key的比较

Sdiff key1 key2 key3
Sdiff key1 key2
sdiff key1 key3
sdiff key2 key3
在这里插入图片描述
不存在的key认为是空集.
在这里插入图片描述

http://www.lryc.cn/news/281192.html

相关文章:

  • DA14531-外设驱动篇-I2C通信应用
  • Git仓库管理笔记
  • [嵌入式软件][入门篇] 搭建在线仿真平台(STM32)
  • 设置5台SSH互免的虚拟机服务器配置
  • 深信服技术认证“SCCA-C”划重点:交付和运维体系
  • xlua源码分析(五) struct类型优化
  • iptables TEE模块测试小记
  • [IDE]vscode显示文件路径
  • facebook广告怎么设置受众人群
  • MySQL夯实之路-MVCC机制深入浅出
  • Java线上问题堆栈排查分析
  • C语言代码 计算1!+2!+3!+4!+5!+6!+7!+8!+9!+10!
  • 【RTOS】快速体验FreeRTOS所有常用API(4)队列
  • 【开题报告】基于SpringBoot的美食制作学习网站的设计设计与实现
  • Rosalind Java|Speeding Up Motif Finding
  • 打印的前后顺序
  • Android Retrofit使用详情
  • 安全加密算法
  • 软件测试|使用matplotlib绘制多种饼图
  • vue3-响应式基础之ref
  • 华为网络设备 通过路由器子接口 Dot1q终结子接口实现跨VLAN通信
  • 代码随想录算法训练48 | 动态规划part09
  • 2024最新适用于 Windows 、Mac 的最佳屏幕录制软件
  • 【Docker】概述与安装
  • 衡水学院新人真题百练2022(1-20)修订版
  • 远程调用(OpenFeign)
  • 智能光栅光片显微成像技术的LabVIEW解决方案
  • 手撕乘积(**Multiplication** **Product**): 穷举和图示(2) 点积的几何意义
  • postman环境变量全局变量设置
  • Linux 内核线程