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

Redis的Set集合

Redis的Set类型

  • 一.Set集合
  • 二.Set集合的普通命令
    • 1.SADD
    • 2.SMEMBERS
    • 3.SISMEMBER
    • 4.SPOP
    • 5.SMOVE
    • 6.SREM
    • 7.SINTER
    • 8.SINTERSTORE
    • 9.SUNION
    • 10.SUNIONSTORE
    • 11.SDIFF
    • 12.SIDFFSTORE
  • 三.Set集合内部编码方式
    • 1.intset(整数集合)
    • 2.hashtable(哈希表)
  • 四.Set的应用场景
    • 1.Set保存用户标签
    • 2.Set计算用户之间的共同好友
    • 3.Set统计UV

一.Set集合

set集合简单地说,就是把一些有关联的数据放到一起。

它还有一些特殊的性质:

  • 例如集合中的元素是无序的,所谓的无序代表此时1,2,3和2,3,1是等价的。
  • 集合中的元素是不能重复的(唯一的)。

二.Set集合的普通命令

1.SADD

添加元素

在这里插入图片描述

演示:

此时插入的元素都不是重复的,所以返回成功插入元素的个数:

在这里插入图片描述

如果此时插入的元素有重复的则返回个数就不是插入元素的个数:
在这里插入图片描述

2.SMEMBERS

获取set中的所有元素

在这里插入图片描述

演示:

在这里插入图片描述

3.SISMEMBER

判断元素是否存在

在这里插入图片描述

演示:
在这里插入图片描述

4.SPOP

随机删除,count不写就只删除1个,写了按照count的数值来进行删除

在这里插入图片描述

演示:
在这里插入图片描述

5.SMOVE

将一个元素源set中取出,放到目标set当中

在这里插入图片描述

演示:
在这里插入图片描述
注意:

如果key2中已经存在一个数值1,此时再将key1中的数值1,smove到key2中,此时key2不会发生变化,但是key1会将数值1进行删除:

在这里插入图片描述

6.SREM

删除一个或者多个指定元素

在这里插入图片描述

演示:
在这里插入图片描述

7.SINTER

获取给定set一个或者多个集合中的交集(集合中都有的元素)元素

在这里插入图片描述

演示:
在这里插入图片描述

8.SINTERSTORE

直接把算好的交集放在指定的key中

在这里插入图片描述

演示:

在这里插入图片描述

9.SUNION

给定set集合中求并集(将给定的set集合不重复的元素全部合在一起)的操作

在这里插入图片描述

演示:
在这里插入图片描述

10.SUNIONSTORE

算好并集的结果放到目标key中

在这里插入图片描述

演示:

在这里插入图片描述

11.SDIFF

给定set集合,求它们的差集(A和B集合的差集,就是A存在,B不存在的元素)元素

在这里插入图片描述

演示:
在这里插入图片描述
在这里插入图片描述

12.SIDFFSTORE

算好差集,再将这个集合放在指定key中

在这里插入图片描述

演示:
在这里插入图片描述

在这里插入图片描述

三.Set集合内部编码方式

1.intset(整数集合)

为了节省空间做出的优化,也就是当元素均为整数,并且元素个数不多时,使用intset进行存储:

在这里插入图片描述

2.hashtable(哈希表)

当内部元素过多或者有字符串时,就变成了hashtable来进行存储数据:

在这里插入图片描述

四.Set的应用场景

1.Set保存用户标签

最常用的方面就是用户画像,分析一个用户的特征后,在投其所好来进行推送这个用户所感兴趣的内容。

上述还会从搜索的历史记录等其他方面来进行分析一个用户的特征,这样就能够收集完用户的特征,这些特征也就转换成了用户的标签,并且把这些标签存在redis的set集合中。

2.Set计算用户之间的共同好友

基于集合求交集的操作可以体现在,现在使用的QQ上,举一个栗子:

你和你的好基友在一个班级上,你们都加了班级上的同学,此时QQ上就会显示共同好友有多少个。

还有一个推荐好友的栗子:

当我们进入大学之后,我们在QQ上肯定会加自己班级上的人,但是你加的同学,他可能是社团的人,他就可能加了社团里面的人(这些人和你不是一个班级也不是一个专业),此时QQ就会把你同学他在社团里面加的人推送给你。

3.Set统计UV

PV:page view

用户每次访问该服务器,每次同一个用户的访问都会产生一个pv。

UV:user view

每个用户访问服务器都会产生一个uv,但是相同的用户多次访问,不会使UV增加,此时就会需要进行去重操作,就可以使用set来实现。

相关文章:

  • Reactor 事件流 vs. Spring 事件 (ApplicationEvent)
  • [cpp] cpp11--condition_variable(条件变量)
  • 【ESP32】VSCode配置ESP-IDF问题及解决方法
  • Promise的状态和方法是什么?
  • OpenHarmony子系统开发 - init启动引导组件(八)
  • 【AI编程学习之Python】第一天:Python的介绍
  • Python_电商erp自动拆分组合编码
  • Kafka中的消息是如何存储的?
  • 软件工程面试题(九)
  • CXL UIO Direct P2P学习
  • Python 服务器部署全解析:API 调用、数据处理与展示
  • 头歌 | Linux之用户高级管理
  • MYTOOL-笔记
  • Linux系统编程 | 线程的基本概念
  • 安装Webpack并创建vue项目
  • 深入理解 `git pull --rebase` 与 `--allow-unrelated-histories`:区别、原理与实战指南
  • 中医卫气营血辨证
  • STM32基础教程——旋转编码器测速
  • Django实战:打造美观的管理后台
  • 【银河麒麟高级服务器操作系统 】虚拟机运行数据库存储异常现象分析及处理全流程
  • 网站建设基础服务报价/北京seo网络优化招聘网
  • 温州小学网站建设/爱站网ip反域名查询
  • 怎么做网站主页/百度导航
  • 建一个门户网站多少钱/适合小学生的最新新闻
  • 流行的企业网站推广/网站优化师
  • 网站开发专业培训/想做电商怎么入手