【Redis】 关于 Redis 集合类型

news/2024/12/22 19:39:50/

文章目录

  • 🍃前言
  • 🌳普通命令
    • 🚩sadd
    • 🚩smembers
    • 🚩sismember
    • 🚩scard
    • 🚩spop
    • 🚩smove
    • 🚩srem
  • 🌲集合间操作
    • 🚩sinter
    • 🚩sinterstore
    • 🚩sunion
    • 🚩sunionstore
    • 🚩sdiff
    • 🚩sdiffstore
  • 🎍集合类型的内部编码
  • 🍀集合类型的使用场景
  • ⭕总结

🍃前言

集合类型是用来保存多个字符串类型的元素的,但和列表类型是不同的,集合中

  1. 元素之间是⽆序的
  2. 元素不允许重复。

⼀个集合中最多可以存储 2^32 - 1 个元素。Redis 除了⽀持集合内的增删查改操作,同时还⽀持多个集合取交集、并集、差集,合理地使⽤好集合类型,能在实际开发中解决很多问题

🌳普通命令

🚩sadd

将⼀个或者多个元素添加到 set 中。注意,重复的元素⽆法添加到 set 中。

语法:

java">sadd key member [member ...]

时间复杂度:

  • O(1)

返回值:

  • 本次添加成功的元素个数

在这里插入图片描述

🚩smembers

获取⼀个 set 中的所有元素,注意,元素间的顺序是⽆序的。

语法:

java">semembers key

时间复杂度:

  • O(N)

返回值:

  • 所有元素的列表。

在这里插入图片描述

🚩sismember

判断⼀个元素在不在 set 中。

语法:

java">sismember key member

时间复杂度:

  • O(1)

返回值:

  • 1 表⽰元素在 set 中。0 表⽰元素不在 set 中或者 key 不存在。

在这里插入图片描述

🚩scard

获取⼀个 set 的基数(cardinality),即 set 中的元素个数。

语法:

java">scard key

时间复杂度:

  • O(1)

返回值:

  • set 内的元素个数。

在这里插入图片描述

🚩spop

从 set 中删除并返回⼀个或者多个元素。注意,由于 set 内的元素是⽆序的,所以取出哪个元素实际是未定义⾏为,是随机的

语法:

java">spop key [count]

时间复杂度:

  • O(N), n 是 count

返回值:

  • 取出的元素。

在这里插入图片描述

🚩smove

将⼀个元素从源 set 取出并放⼊⽬标 set 中。

语法:

java">smove source destination member

时间复杂度:

  • O(1)

返回值:

  • 1 表⽰移动成功,0 表⽰失败

在这里插入图片描述

🚩srem

将指定的元素从 set 中删除。

语法:

java">srem key member [member ...]

时间复杂度:

  • O(N), N 是要删除的元素个数.

返回值:

  • 本次操作删除的元素个数。

在这里插入图片描述

🌲集合间操作

对于集合,我们有三种基本操作,分别为交集、并集、差集

🚩sinter

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

语法:

java">sinter key [key ...]

时间复杂度:

  • O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数.

返回值:

  • 交集的元素。

在这里插入图片描述

🚩sinterstore

获取给定 set 的交集中的元素并保存到⽬标 set 中。

语法:

java">sinterstore destination key [key ...]

时间复杂度:

  • O(N * M), N 是最⼩的集合元素个数. M 是最⼤的集合元素个数.

返回值:

  • 交集的元素个数

在这里插入图片描述

🚩sunion

获取给定 set 的并集中的元素。

语法:

java">sunion key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 并集的元素

在这里插入图片描述

🚩sunionstore

获取给定 set 的并集中的元素并保存到⽬标 set 中。

语法:

java">sunionstore destination key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 并集的元素个数。
    在这里插入图片描述

🚩sdiff

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

语法:

java">sdiff  key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 差集的元素

在这里插入图片描述

🚩sdiffstore

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

语法:

java">sdiffstore destination key [key ...]

时间复杂度:

  • O(N), N 给定的所有集合的总的元素个数.

返回值:

  • 差集的元素个数

在这里插入图片描述

🎍集合类型的内部编码

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

  • intset(整数集合):当集合中的元素都是整数并且元素的个数⼩于set-max-intset-entries 配置(默认 512 个)时,Redis 会选⽤ intset 来作为集合的内部实现,从⽽减少内存的使⽤。
  • hashtable(哈希表):当集合类型⽆法满⾜ intset 的条件时,Redis 会使⽤ hashtable 作为集合的内部实现。

🍀集合类型的使用场景

集合类型⽐较典型的使⽤场景是标签(tag)。

例如 A ⽤⼾对娱乐、体育板块⽐较感兴趣,B⽤⼾对历史、新闻⽐较感兴趣,这些兴趣点可以被抽象为标签。有了这些数据就可以得到喜欢同⼀个标签的⼈,以及⽤⼾的共同喜好的标签,这些数据对于增强⽤⼾体验和⽤⼾黏度都⾮常有帮助。

例如⼀个电⼦商务⽹站会对不同标签的⽤⼾做不同的产品推荐

⭕总结

关于《【Redis】 关于 Redis 集合类型》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下


http://www.ppmy.cn/news/1463631.html

相关文章

ECMAScript 深度解析:现代 JavaScript 综合指南

JavaScript,作为无所不在的 Web 语言,其背后的标准规范称为 ECMAScript。无论您是经验丰富的 Web 开发人员还是刚开始编程之旅的新手,理解 ECMAScript 都是释放 JavaScript 全部潜能并构建动态交互式应用程序的关键。在本文中,我们…

RabbitMQ不完整的笔记

同步的不足 1、拓展性差,当要添加功能时,需要在原来的功能代码上做修改,高耦合。 2、性能下降,调用者需要等待服务提供者执行完返回结果后,才能继续向下执行 3、级联失败,由于我们是基于OpenFeign调用交易…

C++进阶之路:何为运算符重载、赋值运算符重载与前后置++重载(类与对象_中篇)

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

掌握SQL注入检测:深入理解SQLMAP工具

引言 在网络安全领域,SQL注入是一个广泛存在的漏洞,它允许攻击者通过Web应用对数据库执行非法的SQL命令。SQLMAP是检测这类漏洞的顶尖工具之一。本文将深入探讨SQLMAP工具,从其基本介绍到高级使用技巧,帮助读者全面理解并有效运用…

Java基础入门day57

day57 JSP、Servlet&#xff0c;Java bean和JDBC整合项目 index.jsp页面 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %> <!DOCTYPE html> <html> <head><title>JSP - Hello World</title> …

Spring MVC的请求流程

Spring MVC&#xff08;Model-View-Controller&#xff09;是一种基于Java的实现了MVC设计模式的轻量级Web框架。它通过一套注解&#xff0c;可以快速地搭建一个可扩展、易维护的Web应用程序。下面是Spring MVC处理请求的基本流程&#xff1a; 用户发起请求&#xff1a;用户通过…

2024电激世界脉动-中国汽车品牌全球化制胜手册

来源&#xff1a;奥美Ogilvy&#xff1a; 近期历史回顾&#xff1a; 2024中国宏观经济专题报告-数据要素市场建设 2023-2024年度报告.pdf 2024制药与生化医疗技术产业链白皮书.pdf 从可再生能源到绿氢-中国投资助力埃及能源转型.pdf 2024有机旅行中国行业指引.pdf 2024中国技术…

Go源码--sync库(1)

简介 这篇主要介绍 sync.Once、sync.WaitGroup和sync.Mutex sync.Once once 顾名思义 只执行一次 废话不说 我们看源码 英文介绍直接略过了 感兴趣的建议读一读 获益匪浅 其结构体如下 Once 是一个严格只执行一次的object type Once struct {// 建议看下源码的注解&#xf…