零基础学习Redis(9) -- set类型命令使用

news2024/9/28 13:28:13

set,即集合和list类似,集合中的每个元素都是string类型,但是集合中的元素是无序且不能重复的

1. 增删查操作

1.1 增加元素 

 sadd key member1 menber2 ...

在key中添加一个或多个menber1 ,返回添加成功的数量,添加每个元素的时间复杂度是O(1):

1.2 查找元素

smembers key

返回key中所有的key:

注意,返回的元素顺序是不确定的,尽管多次执行返回的顺序一致

sismember key member

判断元素member是否在key中,在则返回1,不在则返回0:

scard key 

返回key中元素的数量:

1.3 删除元素

spop key [count]

从key中随机删除 count个元素,不写则删除一个,返回删除的元素:

 

srem key member1 member2 ...

从key中删除 指定值的一个或多个元素,返回删除成功的数量:

1.4 移动元素

 smoce source destination member

把member从source上删除,再插入到destination中,source中存在member则返回1,不存在则返回0:

如果source和destination中都存在member也会返回1,同时source中的member会被删除

2. 集合运算

2.1 交集运算

交集为多个集合中都存在的元素组成的集合:

A: 1 2 3 4

B: 3 4 5 6

A和B的交集为 :3 4

sinter key1 key2 key3...

返回多个key的交集:

2. 2 并集运算

并集:多个集合中的元素组合在一起,重复的元素保留一份就是并集

A: 1 2 3 4

B: 3 4 5 6

A和B的并集为:1 2 3 4 5 6

sunion key1 key2 key3...

返回多个集合的并集:

2.3 差集运算

差集:A和B做差集,就是找出在A中存在,在B中不存在的元素

A: 1 2 3 4

B: 3 4 5 6

A和B做差集为:1 2

B和A做差集为:5 6

sdiff key1 key2 key3 ...

返回key1 依次对后面所有集合做差集的结果:

上面的三个命令都是把运算结果直接输出,实际上,redis还提供了另一个版本的上述三个命令,可以把结果输出到一个集合中:

sinterstore destination key1 key2 key3 ...

sunionstore destination key1 key2 key3 ...

sdiffstore destination key1 key2 key3 ...

把运算结果输出到destination中,并返回destination中元素数量:

 

如果destination中原本存在元素,会先把destination中的元素清空:

3. 内部编码

1. Intset:

  • 适用场景:当集合中的元素都能被表示为整数,并且集合的元素数量较少时。
  • 特点:Intset 是一种压缩编码方式,专门用于存储整数值集合。它将集合中的整数值紧凑地存储在一个连续的内存块中。
  • 转换:如果集合中插入了非整数元素或集合元素数量超过一定阈值,Redis 会将 Intset 转换为哈希表编码。

2. Hash Table:

  • 适用场景:当集合的元素数量较多,或者集合包含非整数类型的元素时。
  • 特点:哈希表是 Redis 默认使用的集合编码方式,它支持快速的元素插入、删除和查找操作。每个元素在哈希表中作为键存在,值部分为空。

3. Listpack:

  • 适用场景:在 Redis 5.0 及以后的版本中,如果集合的大小较小,Redis 可能会使用 Listpack 来存储集合元素。
  • 特点:Listpack 是一种内存高效的数据结构,用于存储小规模集合。它压缩存储元素,以减少内存占用。

4. 应用场景

1. 储存用户标签 

分析出用户的特征偏好,提取出关键词存储在redis中,可以更具用户的标签进行定向推送其偏好内容。

同时还可以对两个用户的标签做交集,实现推送好友等功能,增加社交属性。

2. 统计UV

互联网衡量用户的规模有两种指标

1. PV (page view) : 用户每向服务器发送一个请求就会增加一个PV

2. UV (user view) : 每有一个用户访问服务器就会增加一个UV,同一个用户多次访问只算作一次

于是可以通过set去重的功能,来统计UV

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

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

相关文章

ZW3D二次开发_UI_ZsCc::OptionRadios控件回调

1.ZW3D中的OptionRadios控件如何实现点击触发回调并且获取点击后的值?如下图 2.教程如下: 1)添加OptionRadios控件到表单中 2)增加radio按钮 3)添加回调 4)编写回调函数 int radioCallbackDemo(char* for…

OpenHarmony 实战开发——应用HAP包签名

背景 OpenAtom OpenHarmony(以下简称“OpenHarmony”)应用如果需要对外发布就必须要通过应用签名,DevEco Studio已提供自动签名功能加速应用开发,但自动签名仅限于debug开发,如需对外发布则必须完成release签名。 在…

USR-DR134有人网关如何对接到ThingsPanel

本指南将帮助您使用有人口红串口服务器USR-DR134/USR-DR132将断路器接入ThingsPanel平台。这款创新的超小体积导轨式单串口服务器能够实现RS485/RS232转以太网的双向透传功能,是连接断路器与物联网平台的理想选择。 设备介绍: 口红串口服务器USR-DR134…

Juniper防火墙与交换机trunk配置

拓扑图 防火墙配置 set interfaces ge-0/0/1 description To_INET set interfaces ge-0/0/1 enable set interfaces ge-0/0/1 vlan-tagging set interfaces ge-0/0/1 unit 97 description To_INET set interfaces ge-0/0/1 unit 97 vlan-id 97 set interfaces ge-0/0/1 unit 9…

【小白深度学习入门】【3】卷积层中的Padding填充详解:作用、类型、优缺点

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 👍感谢小伙伴们点赞、关注! 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

oceanbase 常用视图查询记录

测试环境:1-1-1 OceanBase 企业版3.2.4.4 查看租户的 Context 和 Modudle 内存 SELECT tenant_id, svr_ip, ctx_id, ctx_name, mod_name, count, round(HOLD / 1024 / 1024, 2) hold_mb, round(used / 1024 / 1024, 2) used_mb FROM oceanbase.__all_virtual_memory…

noge-gyp构建项目踩坑记录

开发环境 系统: win11 node: 19.7.0 npm: 8.3.2 node-gyp: 10.0.2可以不使用windows-build-tools来安装构建工具,手动进行安装 我这边用windows-build-tools安装时候会提示 process.env only accepts a configurable, writable, and enumerable data descriptor. 查了资料后…

设计者模式之访问者模式

1.访问者模式概述 允许你在不改变对象结构中的元素类的前提下,向对象结构中的元素增加新的行为。这种模式将数据结构与作用于结构上的操作分离,从而使得我们可以独立地改变数据结构和操作。 2.访问者模式的组成部分 1)Visitor(访…

Mysql基础练习题 595.大的国家 (力扣)

如果一个国家满足下述两个条件之一,则认为该国是 大国 : 面积至少为 300 万平方公里(即,3000000 km2),或者 人口至少为 2500 万(即 25000000) 编写解决方案找出 大国 的国家名称、…

可视耳勺有没有实用性?揭露五大隐患套路!

随着科技的进步,很多人着重关注自己的个护健康,传统挖耳勺的盲目操作引起鼓膜受损的操作屡见不鲜,很多人摈弃传统挖耳勺,选择了更加直观挖耳的可视耳勺,它能通过高清内窥镜进入耳朵实时反映耳道的情况,受到…

无人机飞手执照,合法飞行不得不考的证

无人机飞手执照(也称为民用无人驾驶航空器系统驾驶员合格证或遥控航空模型飞行员执照)在特定情况下是合法飞行所必需的。以下是关于无人机飞手执照的详细解答: 一、无人机飞手执照的必要性 1. 法规要求:根据《民用无人驾驶航空器…

【安当产品应用案例100集】013-安当透明加密组件实现企业网盘数据安全存储

企业数据存储是企业运营中一个复杂关键的过程,它涉及多个方面,包括选择合适的存储解决方案、实施数据备份与恢复策略、确保数据安全以及优化存储性能等。 本案例中,我们将以企业网盘文件存储和共享为例,介绍一下办公场景和出差场…

html2canvas、pdf-lib、file-saver将html页面导出成pdf

html2canvas、pdf-lib、file-saver将html页面导出成pdf 项目背景 需要根据用户的账号信息,生成一个pdf报告发给客户,要求报告包含echart饼图、走势图等。 方案 使用html2canvas,将页面转成图片,再通过pdf-lib将图片转成pdf文件…

食家巷一窝丝:匠心传承的美味传奇

在美食的广袤天地中,有一种独特的存在 —— 食家巷一窝丝。它不仅仅是一道美食,更是一种文化的传承,一段历史的记忆。食家巷一窝丝,以其精湛的制作工艺和独特的口感令人陶醉。每一根丝都细如发丝,均匀整齐,…

基于CW2217B的库仑计硬件设计

一、CW2217简介: CW2217B是一款适用于穿戴设备的超低功耗锂电池电量计芯片。芯片监测电池在充放电状态下的电压,电流和温度,运行专利“FastCali”电量计算法,结合电池建模信息,可准确计算电池的剩余电量。CW2217B适用于包括锂锰,锂钴和聚合物等多种类型的锂电池应用。 …

fastadmin 列表显示渲染图片

想把地址显示成图片 在对应的js文件里加上这句话 formatter: Table.api.formatter.image 如果想点击图片列可以看图片的大图,则需要加上 events: Table.api.events.image 效果 Table.api.formatter Table.api.formatter封装了许多FastAdmin表格列表中常用的单元…

从入门到精通:TEMU商家如何利用自养号测评打造爆款

TEMU平台以其独特的魅力和无限潜力,吸引着众多商家竞相入驻。然而,面对激烈的市场竞争,如何快速提高销量,成为摆在每位商家面前的重大课题。本文将深入剖析一种高效且具策略性的方法——精细化自养号测评,帮助TEMU商家…

比较器(过零/非过零检测+噪声的影响+滞回+输出限幅+窗口比较器)

2024-8-30,星期五,7:25,天气:晴,心情:晴。今天周五啦,终于可以休息了,也祝大家周末快乐,玩的开心!。 今天开始了第八章基本运算放大器电路的学习&#xff0c…

Python计算机视觉 第6章-图像聚类

Python计算机视觉 第6章-图像聚类 6.1 K-means聚类 K-means 聚类 是一种常用的无监督学习算法,用于将数据集划分为 ( K ) 个簇。 算法步骤 选择 ( K ) 个初始簇中心(可以是随机选择或其他启发式方法)。将每个数据点分配到距离其最近的簇…

排查C++程序CPU异常占用方法

如果服务器资源允许可以考虑一些CPU资源占用工具,例如Perf、SystemTap。 服务器资源不允许的情况下可以使用GDB调试。 步骤如下: 1、使用top查看CPU高占用的程序,记下它的进程ID; 2、多线程服务排查时,需要排查对应…