redis中的set类型及常用命令

devtools/2024/11/24 15:51:26/

  集合就是把一些有关联的数据放到一起。与list不同的是,集合中的顺序不重要,变换了元素的顺序,仍是同一个集合。集合中的元素是不能重复的。和list类似,集合中的每个元素,也都是string类型。

关于集合的相关命令

sadd/smembers/sismember/scard

sadd:将⼀个或者多个元素添加到 set 中。返回值表示本次成功添加了几个元素。注意,重复的元素⽆法添加到 set 中。

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

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

scard:求set中元素个数。

spop/srandmember

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

srandmember:随机获取一个成员,不会删除。

smvoe/srem

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

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

sinter/sinterstore

sinter:获取给定 set 的交集中的元素。

sinterstore:获取给定 set 的交集中的元素并保存到⽬标 set 中。返回值是交集的元素个数。

sunion/sunionstore/sdiff/sdiffstore

sunion:获取给定 set 的并集中的元素。返回并集的结果。

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

sdiff:获取给定 set 的差集中的元素。

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

set类型的内部编码方式

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


set类型的应用场景

标签(tag)

集合类型⽐较典型的使⽤场景是标签(tag)。例如 A ⽤⼾对娱乐、体育板块⽐较感兴趣,B ⽤⼾
对历史、新闻⽐较感兴趣,这些兴趣点可以被抽象为标签。将标签保存到redis的set中。有了这些数据就可以得到喜欢同⼀个标签的⼈,以及⽤⼾的共同喜好的标签,这些数据对于增强⽤⼾体验和⽤⼾黏度都⾮常有帮助。 例如⼀个电⼦商务⽹站会对不同标签的⽤⼾做不同的产品推荐。

set方便计算交集,很容易就可以找到两个用户之间的公共标签。

计算用户之间的共同好友

还是基于集合求交集,可以计算社交平台中用户之间的共同好友。还可以基于上述做一些好友推荐。A和B是好友,A和C是好友,B和C和D都是好友,系统可以把D推荐给A。

统计UV

一个互联网产品衡量用户量,主要指标有两方面:

1、PV page view  用户每次访问该服务器,每次访问都会产生一个pv。

2、UV user view  每个用户访问服务器,都会产生一个uv,但是同一个用户多次访问,不会使uv增加。uv需要按照用户进行去重。去重过程就可以使用set实现。

以上,关于redis,希望对你有所帮助。


http://www.ppmy.cn/devtools/136581.html

相关文章

小程序-基于java+SpringBoot+Vue的农场管理系统设计与实现

项目运行 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

STM32 RAM在Memory Map中被分为3个区域

型号为STM32F407ZET6,Memory Map如下: 可以看到Flash是完整的一块区域,而RAM却被分成了12KB 16KB 64KB 192KB的三块。 通过查阅资料可知这是ST在芯片设计时针对不同类型的变量做出的考虑,其中: 1.CCM SRAM&#x…

DB2 import/export data

Exporting data to an SQL file for migration can be achieved by generating INSERT statements. However, DB2 doesn’t have a direct EXPORT TO SQL option. Instead, you can combine a query with scripting to generate SQL INSERT statements. Alternatively, DB2’s…

小米顾此失彼:汽车毛利大增,手机却跌至低谷

科技新知 原创作者丨依蔓 编辑丨蕨影 三年磨一剑的小米汽车毛利率大增,手机业务毛利率却出现下滑景象。 11月18日,小米集团发布 2024年第三季度财报,公司实现营收925.1亿元,同比增长30.5%,预估902.8亿元;…

GRU (门控循环单元 - 基于RNN - 简化LSTM又快又好 - 体现注意力的思想) + 代码实现 —— 笔记3.5《动手学深度学习》

目录 0. 前言 1. 门控隐状态 1.1 重置门和更新门 1.2 候选隐状态 1.3 隐状态 2. 从零开始实现 2.1 初始化模型参数 2.2 定义模型 2.3 训练与预测 3 简洁实现 4. 小结 0. 前言 课程全部代码(pytorch版)已上传到附件看懂上一篇RNN的所有细节&am…

Ansys Zemax | 使用多重结构操作数控制单一结构系统中的参数

附件下载 联系工作人员获取附件 概述 这篇文章向您展示了如何使用多重结构编辑器来优化系统、调整公差以及对那些不能从其它编辑器中获取的数值设置跟随求解。 介绍 当光学系统需要在不同状态或结构下进行建模时,OpticStudio中的多重结构 (Multiple Configurat…

蓝桥杯每日真题 - 第22天

题目:(卡片) 题目描述(12届 C&C B组B题) 解题思路: 该问题要求用数字卡片从 1 开始拼出整数,直到某一时刻不能拼出时停止。要确定拼到哪个最大整数,需要统计 每个数字“1”被用…

电子应用设计方案-19:智能云饭锅系统方案设计

智能云饭锅系统方案设计 一、系统概述 本智能云饭锅系统旨在提供便捷、个性化和智能化的烹饪体验,结合云服务实现远程控制、食谱推荐和烹饪数据管理等功能。 二、系统组成 1. 锅体 - 采用高品质的不粘涂层内胆,确保米饭受热均匀且易于清洁。 - 具备良好…