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

redis:set集合命令,内部编码,使用场景

在这里插入图片描述

个人主页 : 个人主页
个人专栏 : 《数据结构》 《C语言》《C++》《Linux》《网络》 《redis学习笔记》

文章目录

  • 前言
  • 命令
    • SADD
    • SMEMBERS
    • SISMEMBER
    • SCARD
    • SPOP
    • SMOVE
    • SREM
    • 集合间操作
      • SINTER
      • SINTERSTORE
      • SUNION
      • SUNIONSTORE
      • SDIFF
      • SDIFFSTORE
  • 内部编码
  • 使用场景
  • 总结


前言

ste集合类型是保存多个字符串类型的元素,但和列表类型不同,集合中元素之间是无序的,元素也不允许重复。

在这里插入图片描述

redis除了支持集合内的增删查改操作,同时支持多个集合取交集,并集,差集。


命令

SADD

将一个或者多个元素添加到 set 中。重复元素无法添加到 set 中

SADD key member [ member … ]

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

在这里插入图片描述


SMEMBERS

获取一个set中所有元素。元素间的顺序是无序的,获取结果的顺序是随机的

SMEMBERS key

返回值:所有元素的列表
时间复杂度:O(N),N为集合元素个数

在这里插入图片描述


注意:
如果执行多次smembers命令,获取结果顺序一致,可能有以下原因:
在这里插入图片描述


SISMEMBER

判断一个元素在不在 set 中

SISMEMBER key member

返回值:1 表示元素在 set 中;0 表示元素不在 set 中 或者 key 不存在
时间复杂度:O(1),set 集合是通过哈希表来实现的

在这里插入图片描述


SCARD

获取一个 set 的基数,即 set 中的元素个数

SCARD key

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

在这里插入图片描述


SPOP

从 set 中删除并返回一个或者多个元素。由于 set 内的元素是无序的,所以取出哪个元素实际是未定义行为,即spop删除元素就是随机删除

SPOP key [count]

返回值:取出的元素
时间复杂度:O(N),N为count的个数

在这里插入图片描述
在这里插入图片描述


SMOVE

将一个元素从 source 取出并放入 destrination 中

SMOVE source destrination member

返回值:1 表示移动成功;0 表示失败
时间复杂度:O(1)
在这里插入图片描述


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为给定的所有集合的总元素个数

在这里插入图片描述


SDIFF

获取给定 set 的差集中的元素

SDIFF key [ key … ]

返回值:差集的元素
时间复杂度:O(N),N给定的所有集合的总的元素个数
在这里插入图片描述


SDIFFSTORE

获取给定 set 的差集中的元素并保存到目标 set 中

SDIFFSTORE destination key [key …]

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

在这里插入图片描述

内部编码

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

  • intset(整数集合):当集合中的元素都是整数并且元素的个数小于 set-max-inset-entries 配置时,redis会使用 intset来作为集合的内部实现;intset是一种紧凑的数据结构,专门用于存储整数数值,通过压缩存储,intset能够节省内存空间
  • hashtable(哈希表):当集合类型无法 intset 的条件时,redis会使用hashtable作为集合的内部实现;hashtable允许存储各种类型的元素,set集合的每个元素都作为一个字符串对象存储,而对应的值则统一为nullptr

在这里插入图片描述

使用场景

  1. 使用 set 来保存用户的标签;标签也就是用户画像,分析出用户的一些特征,分析清楚特征之后,再投其所好
  2. 使用 set 来计算用户之间的共同好友;基于 “集合求交集”,A 和 B是好友,B 和 C是好友,B 和 C 和 D都是好友,就可以将D推荐给A
  3. 使用 set 统计 UV(独立访客数量);每一个用户,访问服务器,都会产生一个 UV,但是同一个用户多次访问,不会是UV增加,UV需要按照用户进行去重

总结

以上就是我的redis学习笔记

在这里插入图片描述

相关文章:

redis:set集合命令,内部编码,使用场景

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言命令SADDSMEMBERSSISMEMBERSCARDSPOPSMOVESREM集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 内部编码使用场景总结 前言…...

45期代码随想录算法营总结

代码随想录训练营总结与收获 在为期60天的代码随想录训练营结束后,我感慨良多。这段时间不仅让我在编程技能上有了明显的提升,更让我在学习习惯和时间管理上有了深刻的反思和改变。 报名参加这个训练营对我来说是一个重要的监督机制。之前我总是拖延&a…...

深入理解Java中的instanceof关键字及接口新特性:方法实现的可能性

目录 引言 1. 什么是instanceof关键字? 1.1 语法结构 1.2 instanceof的用法示例 1.3 instanceof的应用场景 2. Java中的接口能包含方法实现吗? 2.1 默认方法(Default Method) 2.2 静态方法(Static Method&…...

【python中如果class没有self会怎行】

python中如果class没有self会怎样TOC 在Python中,self是一个约定俗成的名称,用于表示类的实例。如果没有使用self,会导致以下问题: 1、无法访问实例属性: 在类的方法中,如果没有self,方法将无…...

【算法】(Python)动态规划

动态规划: dynamic programming。"programming"指的是一种表格法,而非编写计算机程序。通常解决最优化问题(optimization problem)。将问题拆分成若干个子问题,求解各子问题来得到原问题的解。适用于多阶段…...

EasyExcel 学习之 导出 “提示问题”

EasyExcel 学习之 导出 “提示问题” 现象分析解决(伪代码)前端 POST 实现后端实现 现象 EasyExcel 支持导出 xlsx、xls、csv 三种文件格式。在导出过程中可能发生各种异常,当发生异常时应该提示错误信息而非导出一个错误的文件。 分析 首…...

应用系统开发(3)低功耗四运算放大器LM324N

LM324N 是一种广泛使用的 低功耗四运算放大器,由德州仪器(Texas Instruments)和其他制造商生产。它具有四个独立的运算放大器,能够在单电源或双电源模式下运行,适合多种模拟电路应用。以下是详细信息: 芯片基本信息 型号:LM324N封装类型:常见 DIP(双列直插封装)或 SO…...

基于微信小程序的电商平台+LW示例参考

1.项目介绍 系统角色:管理员、普通用户功能模块:管理员(用户管理、商品分类、商品管理、订单管理、系统管理等),普通用户(个人中心、收藏、我的订单、查看商品等)技术选型:SpringBo…...

[Android] Graphic Buffer 的申请

前言: MediaCodec 支持 texture mode,即MediaCodec解码video完毕后把 yuv 数据填入 GPU 共享出来的 graphic buffer 里面,app 会把 video 的 yuv数据 和 ui 的数据通过通过软件渲染组件(opengl等)发送给GPU 进行一并渲染。这样做的效率较低&…...

【大数据学习 | HBASE高级】storeFile文件的合并

Compaction 操作分成下面两种: Minor Compaction:是选取一些小的、相邻的StoreFile将他们合并成一个更大的StoreFile,对于删除、过期、多余版本的数据不进行清除。 Major Compaction:是指将所有的StoreFile合并成一个StoreFile&am…...

多平台编包动态引入依赖的解决方案

最近开发时遇到了这样的需求,A 平台需要引入一个 video.js,B 平台却是不需要的,那么面向 B 平台打包的时候把依赖装进去自然就不大合适。最好的方法是动态引入依赖,根据平台来判断要不要引入 动态引入依赖 很快啊,动…...

[单例模式]

目录 [设计模式] 单例模式 1. 饿汉模式 2. 懒汉模式 3. 单例模式的线程安全问题 [设计模式] 设计模式是软件工程中的一种常见做法, 它可以理解为"模板", 是针对一些常见的特定场景, 给出的一些比较好的固定的解决方案. 不同语言适用的设计模式是不一样的. 这里…...

速盾:游戏盾的功能和原理详解

速盾有一款专注于网络游戏安全的防护系统,它通过实时监测游戏网络流量和玩家行为,以及使用先进的算法和技术进行分析和识别,检测出各种外挂、作弊行为和恶意攻击,从而保障游戏的公平性和玩家的安全性。 速盾游戏盾的主要功能包括…...

Spleeter:音频分离的革命性工具

目录 什么是Spleeter?Spleeter的工作原理Spleeter的应用场景Spleeter的技术优势Spleeter的挑战与局限性结论 什么是Spleeter? Spleeter 是一个由 Deezer 开发的开源音频源分离工具。它基于深度学习技术,尤其是卷积神经网络(CNN&a…...

【笔记】自动驾驶预测与决策规划_Part6_不确定性感知的决策过程

文章目录 0. 前言1. 部分观测的马尔可夫决策过程1.1 POMDP的思想以及与MDP的联系1.1.1 MDP的过程回顾1.1.2 POMDP定义1.1.3 与MDP的联系及区别POMDP 视角MDP 视角决策次数对最优解的影响 1.2 POMDP的3种常规解法1.2.1 连续状态的“Belief MDP”方法1. 信念状态的定义2. Belief …...

openresty入门教程:access_by_lua_block

在OpenResty中,access_by_lua_block 是一个功能强大的指令,它允许你在Nginx的访问控制阶段执行Lua脚本。这个阶段发生在Nginx处理请求的过程中,紧接在rewrite阶段之后,但在请求被传递到后端服务器(如PHP、Node.js等&am…...

Caused by: org.apache.flink.api.common.io.ParseException: Row too short:

Flink版本 1.17.2 错误描述 Caused by: org.apache.flink.api.common.io.ParseException: Row too short: 通过flink中的flinkSql直接使用对应的connector去获取csv文件内容,报获取的数据太短了 可能原因 1.创建的表字段多于csv文件当中的表头 定位 在获取csv…...

hbase的安装与简单操作

好的,这里是关于 HBase 的安装和基本操作的详细步骤,分成几个更清晰的阶段: 第一部分:安装和配置 HBase 1. 环境准备 HBase 依赖于 Hadoop,因此首先确保 Hadoop 已经正确安装和配置。如果没有安装,请先下…...

PySpark本地开发环境搭建

一.前置事项 请注意,需要先实现Windows的本地JDK和Hadoop的安装。 二.windows安装Anaconda 资源:Miniconda3-py38-4.11.0-Windows-x86-64,在window使用的Anaconda资源-CSDN文库 右键以管理员身份运行,选择你的安装路径&#x…...

【进阶】Stable Diffusion 插件 Controlnet 安装使用教程(图像精准控制)

Stable Diffusion WebUI 的绘画插件 Controlnet 最近更新了 V1.1 版本,发布了 14 个优化模型,并新增了多个预处理器,让它的功能比之前更加好用了,最近几天又连续更新了 3 个新 Reference 预处理器,可以直接根据图像生产…...

调试、发布自己的 npm 包

查看 npm 的配置 npm config ls登录 whoami 查看当前登录的用户 npm whoamiaduser 登录 adduser 有以下参数: –scope 作用域–registry 注册地址 默认地址:https://registry.npmjs.org/,也可通过.npmrc文件配置 npm login 是 …...

拓扑学与DNA双螺旋结构的奇妙连接:从算法到分子模拟

拓扑的形变指的是通过连续地拉伸、弯曲或扭曲物体而不进行撕裂或粘合来改变其形状的一种数学变换。拓扑形变属于拓扑学的一个分支,研究在这些操作下保持不变的性质。简单来说,它关注的是物体“形状的本质”,而不是具体的几何形状。 拓扑形变…...

mysql数据库(四)单表查询

单表查询 文章目录 单表查询一、单表查询1.1 简单查询1.2where1.3group by1.4having1.5order by1.6limit 一、单表查询 记录的查询语法如下: SELECT DISTINCT(去重) 字段1,字段2… FROM 表名 WHERE 筛选条件 GROUP BY 分组 HAVING 分组筛选 ORDER BY 排序 LIMIT 限…...

JavaEE初阶---properties类+反射+注解

文章目录 1.配置文件properities2.快速上手3.常见方法3.1读取配置文件3.2获取k-v值3.3修改k-v值3.4unicode的说明 4.反射的引入4.1传统写法4.2反射的写法(初识)4.3反射的介绍4.4获得class类的方法4.5所有类型的class对象4.6类加载过程4.7类初始化的过程4…...

HarmonyOS一次开发多端部署三巨头之功能级一多开发和工程级一多开发

功能级一多开发与工程级一多开发 引言功能级一多开发SysCaps机制介绍能力集canlUse接口 工程级一多开发三层架构规范 引言 一次开发多端部署 定义:一套代码工程,一次开发上架,多端按需部署 目标:支撑开发者快速高效的开发多终端设…...

STL常用遍历算法

概述: 算法主要是由头文件<algorithm> <functional> <numeric>组成。 <algorithm>是所有STL头文件中最大的一个&#xff0c;范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 <numeric>体积很小&#xff0c;只包括几个在序列上面进行简…...

前端开发中常见的ES6技术细节分享一

var、let、const之间有什么区别&#xff1f; var: 在ES5中&#xff0c;顶层对象的属性和全局变量是等价的&#xff0c;用var声明的变量既是全局变量&#xff0c;也是顶层变量​ 注意&#xff1a;顶层对象&#xff0c;在浏览器环境指的是window对象&#xff0c;在 Node 指的是g…...

行业类别-智慧城市-子类别智能交通-细分类别自动驾驶技术-应用场景城市公共交通优化

1.大纲分析 针对题目“8.0 行业类别-智慧城市-子类别智能交通-细分类别自动驾驶技术-应用场景城市公共交通优化”的大纲分析&#xff0c;可以从以下几个方面进行展开&#xff1a; 一、引言 简述智慧城市的概念及其重要性。强调智能交通在智慧城市中的核心地位。引出自动驾驶…...

[High Speed Serial ] Xilinx

Xilinx 高速串行数据接口 收发器产品涵盖了当今高速协议的方方面面。GTH 和 GTY 收发器提供要求苛刻的光互连所需的低抖动&#xff0c;并具有世界一流的自适应均衡功能&#xff0c;具有困难的背板操作所需的 PCS 功能。 Versal™ GTY &#xff08;32.75Gb/s&#xff09;&…...

Unity学习笔记(3):场景绘制和叠层设置 Tilemap

文章目录 前言开发环境规则瓦片绘制拐角 动态瓦片总结 前言 这里学一下后面的场景绘制和叠层技巧。 开发环境 Unity 6windows 11vs studio 2022Unity2022.2 最新教程《勇士传说》入门到进阶&#xff5c;4K:https://www.bilibili.com/video/BV1mL411o77x/?spm_id_from333.10…...

深圳做商城网站/广告接单平台app

这个问题百度了很多次&#xff0c;为了解决走了完了&#xff0c;也让我更了解VS的Release和Debug。VS的2015的Debug需要在属性-链接器-输入-附加依赖器里面写的是python37_d.lib,而Relase里写的是python37.lib。这也就是说明报错为无法打开python37.lib的话就是Relase下找不到这…...

北京网站建设知名公司/赣州seo推广

系统&#xff1a;Ubuntu 10.04 LTS Ubuntu 10.04 LTS下用apt-get install mysql-server-5.1 安装出来的是mysql版本是5.1.41-3ubuntu12.10 (Ubuntu)&#xff0c;版本太低我们需要的mysql event只有在mysql 5.5才支持&#xff0c;因此我们需要安装mysql5.5.14(mysql官方的最新稳…...

中国对外贸易网站/最新新闻热点话题

从世俗的管风琴在14世纪受到教堂音乐的重用到古钢琴①的诞生和普及&#xff0c;钢琴调律渐渐形成了一种专业技能&#xff0c;随着钢琴的发展及人们要求的提高&#xff0c;钢琴调律已成为一项重要的工作。在这一工作中&#xff0c;调律师总结出许多钢琴调律的方法&#xff0c;诸…...

wordpress如何开启page页面评论/注册网站多少钱

免费OA办公系统如何获得企业的信赖&#xff1f;随着互联网信息化时代的到来&#xff0c;越来越多企业选择了使用免费OA办公系统&#xff0c;这也使得免费OA办公系统在最近几年内得到充分的发展。但是市场上有很多的免费OA办公系统并不是真正完全免费的&#xff0c;所以这让很多…...

南昌做公司网站哪家好/流量网站

因为公司需要对接平台业务&#xff0c;然后其中肯定离不开nginx来做代理转发的&#xff0c;而且我们没有http的地址&#xff0c;全是对外暴露的https的地址。今天就遇到了一些问题&#xff0c;在对接平台的时候它们调过来经过nginx总是406报错&#xff0c;今天我就带大家一起揭…...

做网站要学什么语言/百度竞价推广怎么做效果好

参考资料 https://blog.csdn.net/xiaosshhaa/article/details/52134234 题解 题倒不难&#xff0c;空间够&#xff0c;就暴力呗 自己写的时候是&#xff0c; 一个node记录一张踪迹图&#xff0c; 每走一步就新存一张图&#xff0c; 记录自己的行走路径。 最后暴力dfs输…...