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

Redis-set类型

与 list 不同的是,集合内的元素是无序的,同时不能重复,和数学中的集合概念类似

命令

SADD

将一个或者多个元素添加到 set 中,但是需要注意的是重复的元素是无法加入的

sadd key member {member……}

时间复杂度: O(1)

返回值: 添加成功的元素个数

SMEMBERS

获取对应 set 中的所有元素,这些元素的顺序都是无序的

smembers key

时间复杂度: O(N)

返回值: 所有元素的列表

SISMEMBER

用来判断一个元素是否在set中存在

sismember key member

时间复杂度: O(1)

返回值: 1 表示元素在集合中, 0 表示元素不存在或者key不存在

SCARD

获取集合中的元素个数

scard key

时间复杂度: O(1)

返回值: 集合中的元素个数

SPOP

从 set 中删除并返回一个或者多个元素

但是因为 set 中的元素是无序的,所以取出的元素实际是随机的

spop key {count(取出的元素个数)}

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

返回值: 取出的元素

SMOVE

将一个元素从原 set 中取出放入到目标 set 中

smove source(原set) destination(目标set) member

时间复杂度: O(1)

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

SREM

将指定的元素从 set 中删除

srem key member {member……}

时间复杂度: O(N) N表示要删除的元素的个数

返回值: 这一次操作被删除的元素的个数

多集合之间的操作

和数学概念一样,交集、并集、差集

SINTER

获取指定 set 的交集中的元素

sinter key {key……}

时间复杂度: O(N*M) N和M分别是集合的元素个数

返回值: 满足交集条件的所有元素

SINTERSTORE

获取指定 set 的交集中的元素,然后保存到目标 set 中

sinterstore destination key {key……}

时间复杂度: O(N*M) N和M分别是集合的元素个数

返回值: 交集的元素的个数

SUNION

获取指定 set 的并集中的元素

sunion key {key……}

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

返回值: 并集的元素

SUNIONSTORE

获取指定 set 的并集中的元素,然后保存到目标 set 中

sunionstore destination key {key……}

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

返回值: 并集的元素个数

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

返回值: 并集的元素个数

sdiff key {key……}

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

返回值: 差集的所有元素

SDIFFSTORE

获取指定 set 的差集中的元素,然后保存到目标 set 中

sdiffstore destination key {key……}

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

返回值: 差集的元素个数

命令总结

命令

操作

时间复杂度

SADD key element [element ...]

批量添加元素时,时间复杂度与元素数量成正比。

O(k),k 是添加的元素个数

SREM key element [element ...]

批量删除元素时,时间复杂度与元素数量成正比。

O(k),k 是删除的元素个数

SCARD key

直接返回集合的基数(元素个数),无需遍历。

O(1)

SISMEMBER key element

基于哈希表实现,判断元素是否存在的时间为常数。

O(1)

SRANDMEMBER key [count]

若 count 为正,返回不重复元素;为负可能返回重复元素。

O(n),n 是返回的元素数量

SPOP key [count]

随机移除并返回元素,性能与数量相关。

O(n),n 是弹出的元素数量

SMEMBERS key

返回所有元素,需遍历整个集合,大集合慎用。

O(k),k 是集合元素个数

SINTER key [key ...]

求交集,需比较所有集合的公共元素。

O(m * k),m 是集合数,k 是最小集合元素数

SINTERSTORE dest key [key ...]

将交集结果存储到 dest,时间复杂度与 SINTER 相同。

同 SINTER

SUNION key [key ...]

求并集,需合并所有集合的元素。

O(k),k 是所有集合元素总数

SUNIONSTORE dest key [key ...]

将并集结果存储到 dest,时间复杂度与 SUNION 相同。

同 SUNION

SDIFF key [key ...]

求差集(第一个集合独有的元素)。

O(k),k 是所有集合元素总数

SDIFFSTORE dest key [key ...]

将差集结果存储到 dest,时间复杂度与 SDIFF 相同。

同 SDIFF

内部编码

  • 当元素个数较少,且元素都为整数时,为 intset

  • 当元素个数超过 512 个,为 hashtable

  • 当存在元素不是整数时,为 hashtable

相关文章:

  • Vue2_Vue.js教程
  • C#:is关键字
  • 瑞萨RA4M2使用心得-RA-Eco-RA4M2-100PIN-V1.0MCU
  • 聊天室项目之http知识
  • 学习笔记:商品经济(工业经济)
  • 大规模硬件仿真系统的编译挑战
  • LeNet-5简介及matlab实现
  • tiny_dnn_test250101
  • 5G从专家到小白
  • RT-Thread ulog 日志组件深度分析
  • 区块链技术在物联网中的应用与挑战
  • C语言启程1.0
  • C#:枚举(enum)
  • 3D Web轻量化引擎HOOPS Communicator在装配件管理上的具体优势
  • 【嵌入式学习3】基于python的tcp客户端、服务器
  • 洛谷题单3-P1075 [NOIP 2012 普及组] 质因数分解-python-流程图重构
  • Mysql 之 Undo Log/Redo Log/Binlog日志实现事务ACID
  • (八)PMSM驱动控制学习---无感控制之滑膜观测器
  • 【Android Studio 下载 Gradle 失败】
  • [oeasy]python082_变量部分总结_variable_summary
  • 做自己的安卓交友网站/网站竞价推广
  • 办公用品网站建设策划书/运营推广seo招聘
  • 网站浮动qq客服代码/百度app最新版本
  • 做网站分前台后端吗/东莞网络推广
  • 做游戏类型的网站的好处/保定seo网站推广
  • node.js做网站/网络推广合作协议范本