首页 > 其他分享 >Set集合命令

Set集合命令

时间:2024-03-24 17:32:39浏览次数:24  
标签:Set set 6379 0.1 元素 命令 127.0 key 集合

集合类型也是保存多个字符串类型的元素的,元素之间是无序的且不能重复。Redis 除了⽀持集合内的增删查改操作,同时还⽀持多个集合取交集、并集、差集,合理地使⽤好集合类型,能在实际开发中解决很多问题。

普通命令

sadd

将⼀个或者多个元素添加到 set 中。注意,重复的元素⽆法添加到 set 中。
语法:

SADD key member [member ...]

时间复杂度:O(1)
返回值:本次添加成功的元素个数。

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> sadd key 1 2 3 4 5 6
(integer) 6

smembers

获取⼀个 set 中的所有元素,注意,元素间的顺序是⽆序的。
语法:

SMEMBERS key

时间复杂度:O(N)
返回值:所有元素的列表。

127.0.0.1:6379> smembers key
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"

sismember

判断⼀个元素在不在 set 中。
语法:

SISMEMBER key member

时间复杂度:O(1)
返回值:1 表⽰元素在 set 中。0 表⽰元素不在 set 中或者 key 不存在。

127.0.0.1:6379> sismember key 2
(integer) 1
127.0.0.1:6379> sismember key 4
(integer) 1
127.0.0.1:6379> sismember key 99
(integer) 0

scard

获取⼀个 set 的基数(cardinality),即 set 中的元素个数。
语法:

 SCARD key

时间复杂度:O(1)
返回值:set 内的元素个数。

127.0.0.1:6379> scard key
(integer) 6

spop

从 set 中删除并返回⼀个或者多个元素。注意,由于 set 内的元素是⽆序的,所以取出哪个元素实际是未定义⾏为,即可以看作随机的。
语法:

SPOP key [count]

时间复杂度:O(N), n 是 count
返回值:取出的元素。

127.0.0.1:6379> spop key 3
1) "4"
2) "2"
3) "5"
127.0.0.1:6379> spop key 2
1) "1"
2) "3"
127.0.0.1:6379> smembers key
1) "6"

smove

将⼀个元素从源 set 取出并放⼊⽬标 set 中。
语法:

SMOVE source destination member

时间复杂度:O(1)
返回值:1 表⽰移动成功,0 表⽰失败。

127.0.0.1:6379> smembers key
1) "2"
2) "6"
127.0.0.1:6379> smembers key1
1) "1"
2) "3"
3) "4"
4) "5"
127.0.0.1:6379> smove key1 key 1 
(integer) 1
127.0.0.1:6379> smembers key
1) "1"
2) "2"
3) "6"

srem

将指定的元素从 set 中删除。
语法:

SREM key member [member ...]

时间复杂度:O(N), N 是要删除的元素个数.
返回值:本次操作删除的元素个数。

127.0.0.1:6379> srem key 6
(integer) 1
127.0.0.1:6379> srem key1 1 3
(integer) 1
127.0.0.1:6379> smembers key
1) "1"
2) "2"
127.0.0.1:6379> smembers key1
1) "4"
2) "5"

集合间操作

sinter

获取给定 set 的交集中的元素。
语法:

SINTER key [key ...]

时间复杂度:O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数.
返回值:交集的元素。

127.0.0.1:6379> sadd key2 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> sadd key3 4 5 6 7 8
(integer) 5
127.0.0.1:6379> sinter key2 key3
1) "4"
2) "5"
3) "6"

sinterstore

获取给定 set 的交集中的元素并保存到⽬标 set 中。
语法:

SINTERSTORE destination key [key ...]

时间复杂度:O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数.
返回值:交集的元素个数。

127.0.0.1:6379> sinterstore key4 key2 key3
(integer) 3
127.0.0.1:6379> smembers key4
1) "4"
2) "5"
3) "6"

sunion

获取给定 set 的并集中的元素。
语法:

SUNION key [key ...]

时间复杂度:O(N), N 给定的所有集合的总的元素个数.
返回值:并集的元素。

127.0.0.1:6379> sunion key2 key3
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"

sunionstore

获取给定 set 的并集中的元素并保存到⽬标 set 中。
语法:

 SUNIONSTORE destination key [key ...]

时间复杂度:O(N), N 给定的所有集合的总的元素个数.
返回值:并集的元素个数。

127.0.0.1:6379> sunionstore key5 key2 key3
(integer) 8
127.0.0.1:6379> smembers key5
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"

sdiff

获取给定 set 的差集中的元素。
语法:

SDIFF key [key ...]

时间复杂度:O(N), N 给定的所有集合的总的元素个数.
返回值:差集的元素。

127.0.0.1:6379> sdiff key2 key3
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> sdiff key3 key2
1) "7"
2) "8"

sdiffstore

获取给定 set 的差集中的元素并保存到⽬标 set 中。
语法:

SDIFFSTORE destination key [key ...]

时间复杂度:O(N), N 给定的所有集合的总的元素个数.
返回值:差集的元素个数。

127.0.0.1:6379> sdiffstore key6 key2 key3
(integer) 3
127.0.0.1:6379> SMEMBERS key6
1) "1"
2) "2"
3) "3"

内部编码

集合类型的内部编码有两种:

  • intset(整数集合):当集合中的元素都是整数并且元素的个数⼩于 set-max-intset-entries 配置(默认 512 个)时,Redis 会选⽤ intset 来作为集合的内部实现,从⽽减少内存的使⽤。
  • hashtable(哈希表):当集合类型⽆法满⾜ intset 的条件时,Redis 会使⽤ hashtable 作为集合的内部实现。

标签:Set,set,6379,0.1,元素,命令,127.0,key,集合
From: https://blog.csdn.net/st200112266/article/details/136857107

相关文章

  • 使用 adb 命令修改 Android/data 目录下的文件(给碧蓝档案国服吃布丁)
    本文记录如何使用adb命令修改Android/data目录下的文件,然后给国服的碧蓝档案打上布丁......
  • C++:map&set 对红黑树的封装
    C++:map&set对红黑树的封装将红黑树封装为泛型Find接口迭代器insert接口map的operator[]接口总代码展示C++的STL库中,把红黑树封装为了两个容器map与set,本博客将基于红黑树,来实现map和set的封装。如果不了解红黑树,可见博客[数据结构/C++:红黑树]将红黑树封装为泛型......
  • C#设计模式——命令模式(Command Pattern)
    命令模式命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。示例假定要实现一个绘图系统,要求支持撤销功能,下面就用命令模式来实现这一需求。首先定义一个抽象的命令接口publicinterfaceIGraphCommand......
  • openstack glance 运维命令
     创建一个centos7.2的镜像[root@localhost~(keystone_admin)]#lsanaconda-ks.cfgDesktopDownloadskeystonerc_demooriginal-ks.cfgPicturesTemplatesCentOS7.2.qcow2Documentskeystonerc_adminMusicpackst......
  • Linux操作系统的简单终端(Terminal)命令
    ls:列出当前目录下的文件和文件夹。你可以使用ls-l来查看详细信息,或者使用ls-a来显示包括隐藏文件在内的所有文件。cd:用于切换目录。例如,cdDocuments会进入Documents文件夹。你还可以使用cd..来返回上一级目录,或者使用cd~来回到你的主目录。pwd:显示当前所在的目录路径。chm......
  • linux命令详解——uniq,wc,tr
     uniquniq可以对查看内容去重但在我们使用时会发现,uniq的去重逻辑是,当遇到连续多行内容相同时,去除重复行,而对间隔重复内容,无法实现去重功能这里想到可以将sort与uniq结合使用,先对文件内容进行排序,将相同内容行紧邻,然后再使用uniq去重(使用管道符将一个命令的结果作为另一个......
  • 【Linux网络】ip route 命令
    1.iproute命令1.1ip查看已有路由iproutelist#列出默认路由表,和下面这句结果相同iprouteshowtablemain结果(以Ubuntu为例):zx@ubuntu:~/Desktop/codes/muduo/build/release-cpp11/bin$ifconfigens33:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mt......
  • 工作中常用到的Linux命令
    系统,用户信息操作相关命令查看主机ip地址ifconfig获取用户信息id修改用户密码passwd查看链接用户who创建新用户账号useradd删除用户账号userdel修改用户账号的属性usermod查看系统发行版本cat/proc/version说明适用于所有版本。示例[root@vps ~]# cat /pro......
  • eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0 解释
    eslintsrc--extts,tsx--report-unused-disable-directives--max-warnings0解释一下这段命令这段命令是用来运行ESLint工具检查代码的,针对的是src目录下所有.ts和.tsx后缀的TypeScript文件。命令各部分的具体含义如下:eslint:这是执行ESLint工具本身的命令......
  • reset子系统简介
    复位模式在硬件设备被置于复位模式时,通常会限制或禁止对设备寄存器的读写操作。这是为了确保在复位模式下设备能够以可控和可预测的方式进行初始化和复位操作。具体而言,当设备被置于复位模式时,其内部状态和寄存器值可能会被清零或设置为初始状态。此时,外部对设备的读写操作可能会......