Redis数据类型之set

news2024/11/18 21:50:42

文章目录

  • set
    • Ⅰ. 基础操作
    • Ⅱ. 随机数据
    • Ⅲ. 交、并、差
    • Ⅳ. 应用场景
    • Ⅴ. 注意事项


提示:以下是本篇文章正文内容,Redis系列学习将会持续更新

set

在这里插入图片描述

数据存储需求:存储大量的数据,在查询方面提供更高的效率。
需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询。
set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的。


Ⅰ. 基础操作

● 添加数据

sadd key member1 [member2]

● 获取全部数据

smembers key

● 删除数据

srem key member1 [member2]

● 获取集合数据总量

scard key

● 判断集合中是否包含指定数据

sismember key member

回到目录…

Ⅱ. 随机数据

● 随机获取集合中指定数量的数据

srandmember key [count]

● 随机获取集合中的某个数据并将该数据移出集合

spop key [count]

Tip:redis 应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游线路,应用APP推荐,大V推荐等

业务场景:
 每位用户首次使用今日头条时会设置3项爱好的内容,但是后期为了增加用户的活跃度、兴趣点,必须让用户对其他信息类别逐渐产生兴趣,增加客户留存度,如何实现?

业务分析:
 ● 系统分析出各个分类的最新或最热点信息条目并组织成set集合
 ● 随机挑选其中部分信息
 ● 配合用户关注信息分类中的热点信息组织成展示的全信息集合

回到目录…

Ⅲ. 交、并、差

在这里插入图片描述
● 求两个集合的交、并、差集

sinter key1 [key2] 
sunion key1 [key2] 
sdiff key1 [key2]

● 求两个集合的交、并、差集并存储到指定集合中

sinterstore destination key1 [key2] 
sunionstore destination key1 [key2] 
sdiffstore destination key1 [key2] 

● 将指定数据从原始集合中移动到目标集合中

smove source destination member 

业务场景:

  1. 脉脉为了促进用户间的交流,保障业务成单率的提升,需要让每位用户拥有大量的好友,事实上职场新人不具有更多的职场好友,如何快速为用户积累更多的好友?
  2. 新浪微博为了增加用户热度,提高用户留存性,需要微博用户在关注更多的人,以此获得更多的信息或热门话题,如何提高用户关注他人的总量?
  3. QQ新用户入网年龄越来越低,这些用户的朋友圈交际圈非常小,往往集中在一所学校甚至一个班级中,如何帮助用户快速积累好友用户带来更多的活跃度?
  4. 微信公众号是微信信息流通的渠道之一,增加用户关注的公众号成为提高用户活跃度的一种方式,如何帮助用户积累更多关注的公众号?
  5. 美团外卖为了提升成单量,必须帮助用户挖掘美食需求,如何推荐给用户最适合自己的美食?

在这里插入图片描述

回到目录…

Ⅳ. 应用场景

场景一:
集团公司共具有12000名员工,内部OA系统中具有700多个角色,3000多个业务操作,23000多种数据,每位员工具有一个或多个角色,如何快速进行业务操作的权限校验?
在这里插入图片描述
解决方案:
● 依赖 set 集合数据不重复的特征,依赖 set 集合hash存储结构特征完成数据过滤与快速查询
● 根据用户id获取用户所有角色信息
● 根据用户所有角色获取用户所有操作权限放入 set 集合

场景二:
公司对旗下新的网站做推广,统计网站的PV(访问量),UV(独立访客),IP(独立IP)。
PV:网站被访问次数,可通过刷新页面提高访问量
UV:网站被不同用户访问的次数,可通过cookie统计访问量,相同用户切换IP地址,UV不变
IP:网站被不同IP地址访问的总次数,可通过IP地址统计访问量,相同IP不同用户访问,IP不变

解决方案:
● 利用set集合的数据去重特征,记录各种访问数据
● 建立string类型数据,利用incr统计日访问量(PV)
● 建立set模型,记录不同cookie数量(UV)
● 建立set模型,记录不同IP数量(IP)
Tip: redis 应用于同类型数据的快速去重

场景三:
黑名单:
  资讯类信息类网站追求高访问量,但是由于其信息的价值,往往容易被不法分子利用,通过爬虫技术,快速获取信息,个别特种行业网站信息通过爬虫获取分析后,可以转换成商业机密进行出售。例如第三方火车票、机票、酒店刷票代购软件,电商刷评论、刷好评。
  同时爬虫带来的伪流量也会给经营者带来错觉,产生错误的决策,有效避免网站被爬虫反复爬取成为每个网站都要考虑的基本问题。在基于技术层面区分出爬虫用户后,需要将此类用户进行有效的屏蔽,这就是黑名单的典型应用。
   ps: 不是说爬虫一定做摧毁性的工作,有些小型网站需要爬虫为其带来一些流量。
白名单:
  对于安全性更高的应用访问,仅仅靠黑名单是不能解决安全问题的,此时需要设定可访问的用户群体,依赖白名单做更为苛刻的访问验证。

解决方案:
● 基于经营战略设定问题用户发现、鉴别规则
● 周期性更新满足规则的用户黑名单,加入set集合
● 用户行为信息达到后与黑名单进行比对,确认行为去向
● 黑名单过滤IP地址:应用于开放游客访问权限的信息源
● 黑名单过滤设备信息:应用于限定访问设备的信息源
● 黑名单过滤用户:应用于基于访问权限的信息源
Tip: redis 应用于基于黑名单与白名单设定的服务控制

回到目录…

Ⅴ. 注意事项

● set 类型不允许数据重复,如果添加的数据在 set 中已经存在,将只保留一份。

● set 虽然与hash的存储结构相同,但是无法启用hash中存储值的空间。

回到目录…


总结:
提示:这里对文章进行总结:
本文是对Redis的学习,学习了set类型的基础操作、随机数据、交并差,以及他的业务场景、注意事项。之后的学习内容将持续更新!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

家乡主题网页设计代码 旅游主题网页设计 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

详细解读Spring Boot中@Import三种使用方式

需要注意的是:ImportSelector、ImportBeanDefinitionRegistrar这两个接口都必须依赖于Import一起使用,而Import可以单独使用。Import是一个非常有用的注解,它的长处在于你可以通过配置来控制是否注入该Bean,也可以通过条件来控制注…

CNN卷积神经网络

(声明:本文章是在学习他人视频的学习笔记,图片出处均来自该up主,侵权删 up主链接:同济子豪兄的个人空间_哔哩哔哩_bilibili) 卷积神经网络就像一个黑箱,有输入和输出,输入是一个图像…

Spring 中更加简单的 “存储“ 和 “读取“ 对象

目录 1. 更加简单的存储对象 1.1 配置扫描路径 1.2 使用五大类注解存储 bean 对象 1.2.1 五大类注解之间的关系 1.2.2 关于 bean 的命名规则 1.3 使用方法注解存储 bean 对象 1.3.1 bean 的重命名 2. 更加简单的获取对象 (DI) 2.1 属性注入 2.1.1 属性注入优缺点分析 …

三、图片的几何变换

目录一、图片缩放1 - 等比缩放2 - 最近领域插值3 - 双线性插值4 - 矩阵缩放二、图片剪切与位移1 - 图片剪切2 - 图片位移三、图片镜像四、图片仿射变换五、图片旋转一、图片缩放 1 - 等比缩放 # 1 load 2 info 3 resize 4 check import cv2img cv2.imread(image0.jpg, 1) im…

软件工程详细知识点复习(上)

文章目录一、软件工程概述1、软件与软件危机2、软件工程二、可行性研究三、需求分析四、概要设计五、详细设计一、软件工程概述 1、软件与软件危机 软件程序数据文档 1、软件危机的主要表现 软件不能满足用户需求软件开发成本严重超标,开发周期大大超过规定日期…

网络设备安装上线,你要知道的10个步骤

大家好,我是技福的小咖老师。在网络工程中设备的安装工作必不可少,你平时都是按哪些步骤完成的?今天给大家总结一下最常见的10个步骤。 安装流程 网络设备安装流程图 安装环境要求 1► 安装场景 为确保设备的正常运行,延长设备…

C. Infected Tree(思维+DFS)

Problem - 1689C - Codeforces Byteland是一片美丽的土地,因其美丽的树木而闻名。 米沙发现了一棵有n个顶点的二叉树,编号从1到n。二叉树是一个无环连接的双向图,包含n个顶点和n-1条边。每个顶点的度数最多为3,而根是数字为1的顶…

基于STM32G431嵌入式学习笔记——五、NVIC中断(以串口UART中断为例)

一、基础知识 1.专业术语 2.NVIC简介 ①在这里要注意,中断控制是分级处理的 ②是否请求中断是中断源控制的。 ③是否响应中断是响应方控制的。 ④以外部中断为例,外部中断请求顺序就是首先从请求的外部设备中选出优先级最高的一个设备待中断&#xff0c…

唐山盐碱滩成渤海明珠 国稻种芯·中国水稻节:河北曹妃甸大米

唐山盐碱滩成渤海明珠 国稻种芯中国水稻节:河北曹妃甸大米 新华社音视频部制作 记者 杨世尧 河北新闻网讯 王士波 赵诤国 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 中国农民丰收节国际贸易促进会 国稻种芯中国水稻节 中国三农智库网-功能性农业农业大健康…

电脑怎么迁移游戏资源,数据迁移能把游戏数据迁移吗

概述:玩家们在打游戏的过程中,会产生很多数据,尤其是那些大型游戏的玩家,都会珍惜游戏数据。电脑怎么迁移游戏资源?如果您刚刚购买了一台新电脑,并且正在寻找将游戏迁移到新电脑的方法,相信本文…

8 张图 | 剖析 Eureka 的首次同步注册表

注册表对于注册中心尤为重要,所有的功能都是围绕这个注册表展开。比如服务 A 要想访问服务 B,就得知道服务 B 的 IP 地址和端口号吧。如下图所示,传统的方式就是服务 A 知道了服务 B 的地址后,发送 HTTP 请求到对应的 API 地址上。…

MySQL事务管理 MVCC,隔离性详解

目录事务管理事务背景什么是事务?事务的四个属性为什么会出现事务?MySQL支持事务的版本事务提交方式事务常见操作方式演示(体现原子性和持久性)操作注意事项结论事务隔离性查看与设置隔离性各种隔离性演示读未提交【Read Uncommitted】脏读读提交【Read Committed】…

【SNUT集训1】排序 二分 前缀和 差分(6 / 16)

目录 P1094 [NOIP2007 普及组] 纪念品分组 - 排序贪心双指针 P1571 眼红的Medusa - 哈希表 P1678 烦恼的高考志愿 P1024 [NOIP2001 提高组] 一元三次方程求解 1、二分法 2、暴力 P7585 [COCI2012-2013#1] LJUBOMORA - 二分 P4552 [Poetize6] IncDec Sequence- 差分思维…

【Vue学习之从入门到神经】

14天学习训练营导师课程: 郑为中《Vue和SpringBoot打造假日旅社管理系统》 目录 1. VUE介绍 2. Vue导入 3. VUE相关指令 4. 显示隐藏相关 5. Vue周边库 1. VUE介绍 VUE是目前最流行的前端框架, 基于MVVM设计模式VUE框架两种用法: 多页面应用, 在html页面中引入…

【HMS Core】游戏初始化

前提条件 实现游戏初始化前,必须已经完成AppGallery Connect的配置准备,参见AGC控制台准备。已完成集成SDK和配置混淆脚本。 注意事项 本场景中涉及的功能必须在应用启动时完成,而不是用户在进行登录、支付等操作时才完成,否则可…

无线传感器网络:物理层设计

文章目录Physical Layer TechnologiesRadio FrequenciesNarrow-Band CommunicationSpread SpectrumDSSSFHSSUltra Wide Band (UWB)Optical CommunicationAcoustic CommunicationMagnetic Induction CommunicationRF Wireless CommunicationWireless Channel EffectsAttenuation…

项目工作中,管理者如何合理安排任务优先级?

面对各种工作的时候,你是否总是会手忙脚乱? 在项目工作中,管理者每天面对各种工作:需求、沟通还有其他五花八门任务。 管理者应该如何合理安排自己任务的优先级呢? 在安排任务优先级的时候,我最常用方法…

后台部署运维零碎总结

一、场景 为了实现项目部署简化,尽量都由脚本来完成,需要将许多手动处理过程进行脚本化处理。 二、环境 1、VMware 虚拟机 Download VMware Workstation Pro 2、获取CentOs 镜像 3、使用镜像在虚拟机中安装 4、配置网卡信息,重启网络 三…

【算法基础复习1】差分

目录 一、差分简介 一维差分结论 Acwing.797 差分 P4552 [Poetize6] IncDec Sequence - 差分思维玄学题 一、差分简介 规定a数组下标从1开始 a[0]0b数组下标从1开始定义一个数组b,使 对于a数组 其差分数组b为 a是b的前缀和数组 比如 a[2]…