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

8.Redis-set

Set

    • 常用命令
      • sadd
      • smembers
      • sismember
      • scard
      • spop
      • smove
      • srem
      • 集合间操作
        • sinter 交集
        • sinterstore
        • sunion 并集
        • sunionstore
        • sdiff 差集
        • sdiffstore
      • 命令总结
    • 内部编码
    • 应用场景
      • 使用 set来保存用户的“标签”

set(集合)就是把一些有关联的数据放刀一起。
它与list的区别如下:

  1. 集合中的元素是无序的!
    这里说的有序是指变换顺序后,就是不同的list,具体大致如下:
    list [1, 2, 3] 和 [2, 1, 3] 是两个不同的list,而set[1, 2, 3] 和[2, 1, 3]是同一个集合
  2. 集合中的元素是不能重复的。

集合中的元素叫做 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 keyO(1)
sismember key elementO(1)
srandmember key [count]O(n),n 是 count
spop key [count]O(n),n 是 count
smembers keyO(k), k 是元素个数
sinter key [key …] sitnerstoreO(m * k)
sunion key [key …] sunionstoreO(k),k 是多个集合的元素个数总和
sdiff key [key …] sdiffstoreO(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服务器感谢 💖 总体评估 当发现数据库出现问题时,我们首先应该从全局的角度考虑架构中的所有组件。包括: 服务器(数据库和应用程序) 存储:存储故障可能导致关键信息丢失网络接口&#xff1a…...

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…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化

iOS 应用的发布流程一直是开发链路中最“苹果味”的环节&#xff1a;强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说&#xff0c;这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发&#xff08;例如 Flutter、React Na…...