8.Redis-set
Set
- 常用命令
- sadd
- smembers
- sismember
- scard
- spop
- smove
- srem
- 集合间操作
- sinter 交集
- sinterstore
- sunion 并集
- sunionstore
- sdiff 差集
- sdiffstore
- 命令总结
- 内部编码
- 应用场景
- 使用 set来保存用户的“标签”
set(集合)就是把一些有关联的数据放刀一起。
它与list的区别如下:
- 集合中的元素是无序的!
这里说的有序是指变换顺序后,就是不同的list,具体大致如下:
list [1, 2, 3] 和 [2, 1, 3] 是两个不同的list,而set[1, 2, 3] 和[2, 1, 3]是同一个集合 - 集合中的元素是不能重复的。
集合中的元素叫做 member。
常用命令
sadd
作用:将⼀个或者多个元素添加到 set 中。注意,重复的元素⽆法添加到 set 中。
语法:SADD key member [member ...]
返回值:本次添加成功的元素个数。

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

sismember
作用:判断⼀个元素在不在 set 中。
语法:SISMEMBER key member
返回值:1 表⽰元素在 set 中。0 表⽰元素不在 set 中或者 key 不存在。

scard
作用:用于获取集合中成员的数量
语法:SCARD key

spop
作用:从set中随机删除一个或多个 member 并返回一个或多个随机member。
语法:SPOP key [count]

smove
作用:把member 从 source 上删除,再插入到 destination 中。
语法:
SMOVE source destination member
返回值:1 表⽰移动成功,0 表⽰失败。

如果此时有个 key2 里面 有 member元素 4了,再从key3中把这个 member元素4 移动 key2时,key3中 4 会被删除,key2中不会新增多一个4。

srem
作用:将指定的 member 从 set 中删除。
语法:
SREM key member [member ...]
返回值:本次操作删除的元素个数。

集合间操作
sinter 交集
作用:获取给定 set 的交集中的元素。
语法:SINTER key [key ...]
返回值:交集的元素。

sinterstore
作用:获取给定 set 的交集中的元素并保存到⽬标 set 中。
语法:SINTERSTORE destination key [key ...]
返回值:交集的元素个数。

sunion 并集
作用:获取给定 set 的并集中的元素。
语法:SUNION key [key ...]

sunionstore
作用:获取给定 set 的并集中的元素并保存到⽬标 set 中。
语法:SUNIONSTORE destination key [key ...]
返回值:并集的元素个数。

sdiff 差集
作用:获取给定 set 的差集中的元素。
语法:SDIFF key [key ...]

sdiffstore
作用:获取给定 set 的差集中的元素并保存到⽬标 set 中
语法:SDIFFSTORE destination key [key ...]

命令总结
| 命令 | 时间复杂度 |
|---|---|
| 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] | O(n),n 是 count |
| spop key [count] | O(n),n 是 count |
| smembers key | O(k), k 是元素个数 |
| sinter key [key …] sitnerstore | O(m * k) |
| sunion key [key …] sunionstore | O(k),k 是多个集合的元素个数总和 |
| sdiff key [key …] sdiffstore | O(k),k 是多个集合的元素个数总和 |
内部编码
集合类型的内部编码有两种:
- intset(整数集合):当集合中的元素都是整数并且元素的个数⼩于 set-max-intset-entries 配置(默认 512 个)时,Redis 会选⽤ intset 来作为集合的内部实现,从⽽减少内存的使⽤。
- hashtable(哈希表):当集合类型⽆法满⾜ intset 的条件时,Redis 会使⽤ hashtable 作为集合的内部实现。
intset是为了节省空间,做出的特定优化,只有当元素全为整数,并且元素个数不是很多的时候才会被优化菜intset。

应用场景
使用 set来保存用户的“标签”
集合类型比较典型的使⽤场景是标签(tag)。例如 A 用户对娱乐、体育板块比较感兴趣,B 用户 对历史、新闻比较感兴趣,这些兴趣点可以被抽象为标签。有了这些数据就可以得到喜欢同⼀个标签的⼈,以及用户的共同喜好的标签,这些数据对于增强用户体验和用户黏度都⾮常有帮助。 例如⼀个电⼦商务⽹站会对不同标签的用户做不同的产品推荐或者例如qq的好友推荐等。
相关文章:
8.Redis-set
Set 常用命令saddsmemberssismemberscardspopsmovesrem集合间操作sinter 交集sinterstoresunion 并集sunionstoresdiff 差集sdiffstore 命令总结 内部编码应用场景使用 set来保存用户的“标签” set(集合)就是把一些有关联的数据放刀一起。 它与list的区别如下: 集合…...
电子厂生产管理系统解决方案
越来越多的企业开始意识到数字化转型的重要性。在这个过程中,生产型企业面临着许多挑战,例如如何提高生产效率、节省企业资源以及改善生产工艺流程和产品质量。有一种解决方案可以帮助企业应对这些挑战,那就是生产管理系统。 生产管理系统是一…...
ARM DIY(五)摄像头调试
前言 今天,就着摄像头的调试,从嵌入式工程师的角度,介绍如何从无到有,一步一步地调出一款设备。 摄像头型号:OV2640 开发步骤 分为 2 个阶段 5 个步骤 阶段一: 设备树、驱动、硬件 阶段二: 应…...
hadoop2.2.0伪分布式搭建
1.准备Linux环境 1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:192.168.1.0 子网掩码:255.255.255.0 -> apply -> ok 回到windows --> 打开…...
高级IO(select、poll、epoll)
在介绍本文之前,先提出一个问题 什么是IO? 等数据拷贝 1.等 - IO事件就绪(检测功能成分) 2.数据拷贝 高效的IO就是:单位时间,等的比重越小,IO的效率越高 五种IO模型 IO模型: 阻塞式…...
Ceph基础知识和基础架构认识
1 Ceph基础介绍 Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目…...
【C++】快速排序的学习和介绍
前言 本篇文章我们先会学习快速排序这个算法,之后我们会学习sort这个函数 分治算法 在学习快速排序之前,我们先来学习一下分治算法,快速排序就是分治算法的一种,下面是分治算法的介绍, 分治算法,就是”…...
第九章 动态规划part12(代码随想录)
309.最佳买卖股票时机含冷冻期 1. 确定dp数组(dp table)以及下标的含义 dp[i][j],第i天状态为j,所剩的最多现金为dp[i][j]。 2. 确定递推公式 拆分卖出股票状态是因为冷冻期前一天一定是具体卖出股票状态。 状态一 dp[i][0]&…...
ssm珠宝首饰交易平台源码和论文
ssm珠宝首饰交易平台源码和论文101 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势&a…...
交互设计都有哪些准则?
UI交互设计的本质不是完全基于用户的需求,而是交互设计师需要学习根据用户描述的产品形式来了解用户需要什么。 在交互设计过程中,遵循科学交互设计的本质是整个交互设计过程的重要组成部分,这与产品使用过程中给用户带来的体验密切相关。本…...
【MySQL】从哪几个角度分析数据库失败的原因?
总体评估MySQL服务器感谢 💖 总体评估 当发现数据库出现问题时,我们首先应该从全局的角度考虑架构中的所有组件。包括: 服务器(数据库和应用程序) 存储:存储故障可能导致关键信息丢失网络接口:…...
Spring Boot 的核心注解SpringBootApplication
SpringBootApplication 包括的注解 SpringBootConfiguration 组合了 Configuration 注解,实现配置文件的功能。 EnableAutoConfiguration 打开自动配置的功能,也可以关闭某个自动配置的选项, 例如:java 如关闭数据源自动配置功…...
自助式数据分析平台:JVS智能BI功能介绍(一)数据源
一、数据源配置 数据源概述 数据源是JVS-智能BI支持多种数据形态的基础,核心的目标是将不同的数据来源通过统一接入,实现将不同的数据实现统一的数据加工、数据应用。目前JVS-智能BI主要支持3种形态的数据:数据库、API、离线文件。 界面介…...
CSS魔术师Houdini,用浏览器引擎实现高级CSS效果
开门见山,直接上货 🔍 CSS Houdini是什么? “Houdini”一词引用自“Harry Houdini”,他是一位20世纪的著名魔术师,亦被称为史上最伟大的魔术师、逃脱术师及特级表演者。 我们都知道,浏览器在渲染网页显示样…...
DC/DC开关电源学习笔记(二)开关电源的分类
(二)开关电源的分类 1.DC/DC类开关电源2.AC/DC变换器3.电路结构分类4.功率开关管分类5.电路拓扑分类 根据变换方式,电源产品有下列四大类; (1):第一大类:AC/DC开关电源; …...
conda创建python虚拟环境
1.查看当前存在那些虚拟环境 conda env list conda info -e 2.conda安装虚拟环境 conda create -n my_env_name python3.6 2.1在anaconda下改变python版本 当前3.7 安装3.7 conda create -n py37 python3.7 conda activate py37 conda create -n py37 python3.7conda a…...
Python 操作 MongoDB 数据库介绍
MongoDB 是一款面向文档型的 NoSQL 数据库,是一个基于分布式文件存储的开源的非关系型数据库系统,其内容是以 K/V 形式存储,结构不固定,它的字段值可以包含其他文档、数组和文档数组等。其采用的 BSON(二进制 JSON &am…...
【ES6】Generator 函数
Generator 函数是 ES6 引入的一种新的函数类型,它既可以生成一个序列,又可以在某个条件下停止执行,并在需要时恢复执行。Generator 函数非常适合处理那些需要按需计算的场景,例如处理大数据、生成随机数等。 Generator 函数的基本…...
「操作系统」1. 基础
前言:操作系统基础八股文 文章目录 一 、操作系统基础1.1 什么是操作系统?1.2 什么是系统调用1.3 什么是中断 🚀 作者简介:作为某云服务提供商的后端开发人员,我将在这里与大家简要分享一些实用的开发小技巧。在我的职…...
Docker安装Oracl数据库!
安装Docker 查看是否安装docker: yum list installed | grep docker 安装docker: yum -y install docker 启动docker: systemctl start docker 查看docker启劝状态: systemctl status docker 查看docker版本: docker --version 设置docker开机自启动: systemctl en…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
