Redis入门到通关之Set命令

文章目录

  • ⛄ 概述
  • ⛄ Set类型的常见命令
  • ⛄RedisTemplate API
    • ❄️❄️ 添加Set缓存(值可以是一个,也可是多个)
    • ❄️❄️设置过期时间(单独设置)
    • ❄️❄️根据key获取Set中的所有值
    • ❄️❄️根据value从一个set中查询,是否存在
    • ❄️❄️获取Set缓存的长度
    • ❄️❄️移除指定的元素
    • ❄️❄️移除指定的key
    • ❄️❄️ 交集 并集 差集
  • ⛄使用场景


在这里插入图片描述

⛄ 概述

RedisSet结构与Java中的HashSet类似,可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与HashSet类似的特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集.并集.差集等功能

⛄ Set类型的常见命令

  • SADD key member … :向set中添加一个或多个元素
  • SREM key member … : 移除set中的指定元素
  • SCARD key: 返回set中元素的个数
  • SISMEMBER key member:判断一个元素是否存在于set中
  • SMEMBERS:获取set中的所有元素
  • SINTER key1 key2 … :求key1与key2的交集
  • SDIFF key1 key2 … :求key1与key2的差集
  • SUNION key1 key2 …:求key1和key2的并集

⛄RedisTemplate API

❄️❄️ 添加Set缓存(值可以是一个,也可是多个)

//1、通过redisTemplate设置值
redisTemplate.boundSetOps("setKey").add("setValue1", "setValue2", "setValue3");

//2、通过BoundValueOperations设置值
BoundSetOperations setKey = redisTemplate.boundSetOps("setKey");
setKey.add("setValue1", "setValue2", "setValue3");

//3、通过ValueOperations设置值
SetOperations setOps = redisTemplate.opsForSet();
setOps.add("setKey", "SetValue1", "setValue2", "setValue3");

❄️❄️设置过期时间(单独设置)

redisTemplate.boundValueOps("setKey").expire(1,TimeUnit.MINUTES);
redisTemplate.expire("setKey",1,TimeUnit.MINUTES);

❄️❄️根据key获取Set中的所有值

//1、通过redisTemplate获取值
Set set1 = redisTemplate.boundSetOps("setKey").members();

//2、通过BoundValueOperations获取值
BoundSetOperations setKey = redisTemplate.boundSetOps("setKey");
Set set2 = setKey.members();

//3、通过ValueOperations获取值
SetOperations setOps = redisTemplate.opsForSet();
Set set3 = setOps.members("setKey");

❄️❄️根据value从一个set中查询,是否存在

Boolean isEmpty = redisTemplate.boundSetOps("setKey").isMember("setValue2");

❄️❄️获取Set缓存的长度

Long size = redisTemplate.boundSetOps("setKey").size();

❄️❄️移除指定的元素

Long result1 = redisTemplate.boundSetOps("setKey").remove("setValue1");

❄️❄️移除指定的key

Boolean result2 = redisTemplate.delete("setKey");

❄️❄️ 交集 并集 差集

//	交集 返回存储在 “key1” 和 “key2” 中的集合的交集。
Set<Object> intersect = redisTemplate.opsForSet().intersect("key1", "key2");
//	并集 返回存储在 “key1” 和 “key2” 中的集合的并集。
Set<Object> union = redisTemplate.opsForSet().union("key1", "key2");
//	差集 返回存储在 “key1” 中但不在 “key2” 中的集合,即差集。
Set<Object> difference = redisTemplate.opsForSet().difference("key1", "key2");

⛄使用场景

  • 标签系统(Tagging System): Set 可以用来实现标签系统,你可以将每个对象的标签存储在一个 Set 中,以便于快速查找某个标签下的所有对象。

  • 共同好友(Common Friends): 在社交网络应用中,可以使用 Set 来存储用户的好友列表,通过交集操作可以快速计算两个用户的共同好友。

  • 去重(Deduplication): Set 的特性是存储唯一的元素,因此可以用来对数据进行去重,保证数据的唯一性。

  • 集合运算(Set Operations): Redis 提供了丰富的集合操作,比如并集、交集、差集等,这些操作可以用来对多个集合进行操作,从而实现各种复杂的需求,比如统计两个集合的不同元素、查找两个集合的交集等。

  • 实时在线用户列表(Real-time Online Users): 在实时应用中,可以使用 Set 来存储在线用户的 ID,通过添加和删除操作来维护在线用户列表。

  • IP 或用户限流(Rate Limiting): 可以使用 Set 来实现 IP 或用户的限流,每次请求到达时,将请求的 IP 或用户 ID 添加到 Set 中,并设置过期时间,当 Set 中的元素超过限定数量时,就拒绝新的请求。


在这里插入图片描述



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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文略读:ZipIt! Merging Models from Different Tasks without Training

iclr 2024 reviewer 评分 5666 在典型的深度视觉识别模型中&#xff0c;它们通常只能执行它们所训练的单一任务。这篇论文解决了一个极其困难的问题&#xff0c;即如何将具有不同初始化的、各自解决不同任务的独立模型合并成一个多任务模型&#xff0c;而无需任何额外训练。先…

使用 Python 实现复制粘贴的功能

pandas 里面有一个 pd.read_clipboard 函数&#xff0c;可以根据你复制的内容生成DataFrame。是的&#xff0c;就是我们平时选中&#xff0c;然后 CtrlC 时拷贝的内容。所以比较神奇&#xff0c;那么 pandas 到底是怎么做到的&#xff0c;它是怎么读出我们使用 Ctrl C 复制的内…

音乐文件逆向破解

背景 网易云等在线音乐文件的加密源码都按照一定的规则加密&#xff0c;通过对音乐文件的源码分析转化&#xff0c;有望实现对加密文件的解密 实现内容 实现对加密音乐文件的解密 实现对无版权的音乐文件的转化 实现环境 010editor 010 Editor是一个专业的文本编辑器和十六…

一起学习python——基础篇(21)

今天来说一下python中的如何编写get接口api、post接口api以及如何处理请求过来的key-value格式的参数。 1、get接口api&#xff0c;客户端请求参数通过key-value格式到服务端接口。代码如下&#xff1a; from flask import Flask,request app Flask(__name__) app.route(/…

展会邀请|4月24-26日成都工博会,ANDEAWELL邀您共赴蓉城!

2024年4月24-26日 中国西部国际博览城 欢迎您莅临ANDEAWELL展位 15H-D011! 一、诚挚邀请 尊敬的先生/女士您好&#xff1a; 2024成都国际工业博览会(简称“成都工博会”)将于4月24-26日在中国西部国际博览城举办&#xff0c;andeawell也将亮相此次展会&#xff0c;在此我们…

idea如何debug看springsecurity的过滤器顺序

idea如何debug看springsecurity的过滤器顺序 先配置一个Spring启动对象,后续需要根据这个对象来获取SpringSecurity的过滤器链 设置一个输出信息&#xff0c;需要在输出信息这里打上断点&#xff0c;才方便查看过滤器链 public static void main(String[] args) {//此时不…

蓝桥杯嵌入式模板(cubemxkeil5)

LED 引脚PC8~PC15&#xff0c;默认高电平&#xff08;灭&#xff09;。 此外还要配置PD2为输出引脚&#xff08;控制LED锁存&#xff09; &#xff0c;默认低电平&#xff08;锁住&#xff09;&#xff01;&#xff01;&#xff01; #include "led.h"void led_disp…

【Spring Boot 源码学习】SpringApplication 的 run 方法核心流程介绍

《Spring Boot 源码学习系列》 SpringApplication 的 run 方法核心流程介绍 一、引言二、往期内容三、主要内容3.1 run 方法源码初识3.2 引导上下文 BootstrapContext3.3 系统属性【java.awt.headless】3.4 早期启动阶段3.5 准备和配置应用环境3.6 打印 Banner 信息3.7 新建应用…

ETL快速同步用友u8数据方式

在企业信息化进程中&#xff0c;用友U8作为一款广泛应用的ERP系统&#xff0c;承载着企业核心业务数据。为了实现这些数据的有效利用与深度分析&#xff0c;往往需要通过ETL&#xff08;Extract, Transform, Load&#xff09;工具进行快速、准确的数据同步。本文将详细阐述ETL快…

Spring中的适配器模式

在Spring MVC框架中&#xff0c;适配器模式主要体现在对不同类型的处理器&#xff08;即Controller&#xff09;的统一处理上。Spring MVC通过适配器模式来保证无论Controller的实现方式如何多样化&#xff0c;都能够被DispatcherServlet统一调用和管理。具体使用方式如下&…

基于LabVIEW的CAN通信系统开发案例

基于LabVIEW的CAN通信系统开发案例 介绍了基于LabVIEW开发的CAN通信系统&#xff0c;该系统主要用于汽车行业的数据监控与分析。通过对CAN通信协议的有效应用&#xff0c;实现了车辆控制系统的高效信息交换与实时数据处理&#xff0c;从而提升了车辆性能的检测与优化能力。 项…

使用冒泡排序模拟实现qsort函数

目录 冒泡排序qsort函数的使用1.使用qsort函数排序整型数据2.使用qsort函数排序结构数据 冒泡排序模拟实现qsort函数今日题目1. 字符串旋转结果2.杨氏矩阵3.猜凶手4.杨辉三角 总结 冒泡排序 冒泡排序的核心思想是:两两相邻的元素进行比较 代码如下: //⽅法1 void bubble_so…

柯桥地区职业学校日语口语常用成人零基础入门

在日语中,“做饭”有几种表达方式: 1. 料理する 是最常用的说法,意思就是“做料理”。 例句: 毎日妻が料理をしている。 每天妻子都在做饭。 2. 食事を作る 意思是“做饭”,“制作膳食”。 例句: 友達のために食事#15857575376を作った。 为朋友做了饭。 编辑搜图 请点…

在uni-app使用iconfont中的图标

uni-app 如何使用iconfont中的图标 在uni-app中使用Iconfont图标通常涉及以下几个步骤&#xff1a; 步骤一&#xff1a;获取Iconfont资源 访问 iconfont-阿里巴巴矢量图标库&#xff0c;注册并登录账号。 浏览或搜索所需的图标&#xff0c;将它们添加至购物车或直接创建项目进…

下一代换脸和数字人生成神器Facefusion又更新了(懒人包)

号称“下一代换脸和数字人生成神器”的Facefusion软件在2024年3月底发布了最新的2.4.1版本&#xff0c;带来了一系列的更新和改进&#xff0c;使得人脸融合和分析技术更加易用和高效&#xff0c;以及一些性能和功能方面的全面提升。 Facefusion2.4.1版本更新亮点 Facefusion新…

【面试题】s += 1 和 s = s + 1的区别

文章目录 1.问题2.发现过程3.解析 1.问题 以下两个程序真的完全等同吗&#xff1f; short s 0; s 1; short s 0; s s 1; 2.发现过程 初看s 1 和 s s 1好像是等价的&#xff0c;没有什么区别。很长一段时间内我也是这么觉得&#xff0c;因为当时学习c语言的时候教科书…

Python学习笔记23 - 目录操作

os模块操作目录相关函数 os.path模块操作目录相关函数 案例1 —— 列出指定目录下的所有.py文件 案例2 —— walk()

模电和数电哪个更难学?

模电和数电各有其难点&#xff0c;因此很难说哪个更难。 模拟电路&#xff08;模电&#xff09;涉及到连续的电压和电流信号&#xff0c;其分析和设计需要考虑许多因素&#xff0c;如信号失真、噪声、频率响应等。模电的设计通常需要考虑更多的物理参数和元件特性&#xff0c;…

李廉洋:4.15黄金,原油最新资讯,美盘走势分析及策略。

由于欧洲央行很可能先于美联储降息&#xff0c;美元走强。法国兴业银行分析师基特•朱克斯表示&#xff0c;市场“假设我们看到欧洲央行将在6月降息&#xff0c;但美联储不会”&#xff0c;这对美元有利。朱克斯表示&#xff0c;尽管在货币政策决定之前会公布一些相关数据&…