数据结构-Redis(二)

news2024/12/23 8:24:14

前面介绍了redis的String和哈希,接下来看看其他的数据结构

  • List

LPUSH:左边放入

RPUSH:右边放入

LPOP:取出左边第一个数,并且移除

RPOP:取出右边第一个数,并且移除

由上操作可以看出,先进后出,符合栈的原则,所以用list命令实现栈非常容易。

同理如果选择使用LPUSH 和 RPOP,这时候 则先进先出,符合队列原则

Blocking MQ(阻塞队列)可以用LPUSH 和 BRPOP

BLPOP key timeout

解析:BLPOP从列表的左边弹出一个元素,若列表没有元素,阻塞等待timeout秒,

如果timeout=0,则一直阻塞。

BRPOP key timeout

右边弹出一个从列表的右边弹出一个元素,若列表没有元素,阻塞等待timeout秒,

如果timeout=0,则一直阻塞。

LRANGE key 0 5,则可以实际作用于微信公众号和微博推送,按顺序推送前五个发消息给你的文章显示出来,这种redis实现比数据库实现效率高很多。

  • SET

1、抽奖

Set会自动去重,比如抽奖的情况下,防止用户重复抽奖,如图可以看到,李四sadd了两次,但是并没有成功,用SMEMBERS 可以看到所有用户。

SRANDMEMBER  key 2:随机在key抽取两个随机数。

所以用SRANDMEMBER就可以实现抽奖的功能。

这种抽奖抽完还是会在集合中,不会移除,如何抽奖完直接移除呢?

SPOP key 1:这个也是随机抽奖,但是抽完会直接移除。

2、朋友圈点赞

另外set也非常适合朋友圈点赞,比如

给某人朋友圈点赞的张三和李四,也可以用SREM 取消点赞

可以查看某人是否点赞SISMEMBER

可以查看总点赞数SCARD

也可以查看点赞列表SMEMEBERS

除此之外,每个set集合还可以求集合操作。

比如set1{a,b,c},set2{b,c,d},set3{c,d,e}

求三个set集合的交集?

SINTER set1 set2 set3 ->{c}

求三个集合的并集?

SUNION set1 set2 set3->{a,b,c,d,e}

求三个集合的差集?

SDIFF set1 set2 set3->{a}

差集怎么理解的,是第一个集合减去后面两个集合的并集。

因为后面两个并集是 bcde

然后第一个集合减去 abc - bcde

结果留下第一个集合还剩下的元素

所以剩下a

3、朋友圈查看同时关注的人

而这个处理集合最常用的场景就是 朋友圈看互相点赞的功能

我和朋友共同关注的大v,可以互相看到对方的点赞,可以用set交集。

我和朋友同时关注的人,取交集。

我可能关注的人,就是朋友set集合减去我的。

  1. 搜索功能

Set集合还可以用于大家熟知的搜索功能

SADD os:android p40 mi10

SADD brand:huawei p40

SADD brand:iphone iphone14

SADD ram:8G p40 mi-10 iphone 14

搜索点击了8g,并且系统iphone的手机,于是set求并集实现搜索:

SINSERT brand:iphone ram:8g ->{iphone14}

  • ZSET

实际用例则是微博排行榜

ZINCRBY hotNews:20230608 1 mcnxs 代表明朝那些事被用户点击了一次。

ZINCRBY hotNews:20230608 1 st 代表三体被用户点击了一次。

如何展示这些点击数呢?

ZREVRANGE hotNews:20230608 0 3 WITHSCORES

后面的代表数值也一起展示出来。

那么我们现在计算的20230608的,我们如何计算三天呢?

ZUNIONSTORE hotNews:20230608-20230610 3 hotNews:20230608 hotNews:20230609

hotNews:20230610

这样则会求的这三天的排行点击数。后面再用命令显示出来。

ZREVRANGE  hotNews:20230608-20230610 0 9 WITHSCORES

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

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

相关文章

华为OD机试真题 JavaScript 实现【食堂供餐】【2023 B卷 考生抽中题】,附详细解题思路

一、题目描述 某公司员工食堂以盒饭的方式供餐。 为将员工取餐排队时间降为0,食堂的供餐速度必须要足够快。 现在需要根据以往员工取餐的统计信息,计算出一个刚好能达到排队时间为0的最低供餐速度。 即,食堂在每个单位时间内必须至少做出…

ISO21434 生产阶段网络安全(九)

目录 一、概述 二、目标 三、输入 3.1 先决条件 3.2 进一步支持信息 四、要求和建议 五、输出 一、概述 生产包括项目或部件的制造和组装,包括车辆水平。制定生产控制计划是为了确保将开发后的网络安全要求应用于项目或组件,并确保在生产过程中不…

VirtualBox下载增强工具 一直100%或者100%并无其他反映问题踩坑

解决方案 根据自己的VirtualBox版本手动下载增强工具iso文件,并通过光盘方式映射到虚拟机安装。 1.下载对应的ios文件,下载地址:http://download.virtualbox.org/virtualbox 2.按host(一般是右ctrl键)s &#xff0…

DAY 72 redis高可用的主从复制、哨兵、cluster集群

Redis 高可用 什么是高可用 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服…

PHP号卡商城V1.31 号卡推广管理系统源码

PHP号卡商城V1.31 号卡推广管理系统源码 更新日志: v1.31 1.修复自助开通分站时,低版本数据库未设置允许为空报错 v1.3 1.新增后台修改客服、代理、查单链接 源码下载:https://download.csdn.net/download/m0_66047725/87896938

learn C++ NO.9——STL简介、string(1)

文章目录 STL简介什么是STL?发展历史以及版本STL六大组件 初识string类在线文档的简介string类的简介默认成员函数string类的构造函数string的析构函数和赋值等号重载 流插入操作符重载和流提取操作符重载push_back接口和append接口加操作符重载和加等操作符重载 ST…

阿里巴巴内部“Java工程师面试八股文汇总”不讲一句废话,肝就完事了

一转眼 2023 年已经过了大半了,不知道你金三银四上岸了,还是等着秋招呢?大家从 Boss 直聘上或者其他招聘网站上都可以看到 Java 岗位众多,Java 岗位的招聘薪酬天差地别,人才要求也是五花八门。而很多 Java 工程师求职过…

从0搭建Hyperledger Fabric2.5环境

Hyperledger Fabric 2.5环境搭建 一.Linux环境准备 # root登录 yum -y install git curl docker docker-compose tree yum -y install autoconf autotools-dev automake m4 perl yum -y install libtool autoreconf -ivf # 安装jq相关包 cd /opt git clone --recursive https…

C++作业day6

2.全局变量,int monster 10000;定义英雄类hero,受保护的属性string name,int hp,int attck;公有的无参构造,有参构造,虚成员函数 void Atk(){blood-0;},法师类继承自英雄类,私有属性…

互联网医院源码分享,打造智慧医疗新模式

作为医疗行业的技术革新代表,互联网医院在现代医疗行业中扮演着越来越重要的角色。而互联网医院源码也是众多医院引进互联网医院的核心要素之一。在这篇文章中,我们将分享互联网医院源码的相关知识。 什么是互联网医院源码? 互联网医院源码…

Android——Activity初步(二)

说明&#xff1a; Android这个系列中使用的开发工具为&#xff1a;Eclipse中配置ADT插件。 <LinearLayout – 表示使用的是线性布局管理器xmlns:androidhttp://schemas.android.com/apk/res/android—引用Androidxmlns:tools"http://schemas.android.com/tools"a…

U盘打不开?恢复u盘,3招解决!

案例&#xff1a;u盘插入电脑后一点反应都没有&#xff0c;这是为什么呢&#xff1f;u盘打不开怎么办&#xff1f; 【我将u盘插入电脑后u盘显示无法打开&#xff0c;为什么会出现这种情况呢&#xff1f;遇到u盘打不开的情况应该怎么办呢&#xff1f;】 经常使用u盘存储文件的朋…

想升职加薪?网络安全行业推荐考取的证书

推荐大家考取CISP证书&#xff0c;CISP认证是业内公认的国内信息安全领域最权威的国家级认证。 对于在校大学生&#xff0c;可以考取NISP一级和二级&#xff0c;然后免费置换CISP&#xff1b; 对于安全领域相关从业者&#xff0c;直接考取CISP证书&#xff0c;CISP认证还有许…

大麦生成链接 大麦一键生成订单截图

一键生成购票链接 一键生成订单截图 下载程序&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

springboot的目录结构作用

springboot单体项目结构大概如下。 代码都在src/main下&#xff0c; java是后端代码 java下最基本的包 dao(mapper) entity(model) service controller 其他的包根据项目需求扩展。 resources下是配置文件。 如果不是前后端分离&#xff0c;resources下放的是静态文件…

06【HTML5新增标签】

文章目录 六、HTML5新增标签6.1 布局标签6.1.1 常规布局标签6.1.2 控件标签1&#xff09;meter标签2&#xff09;progress标签3&#xff09;details标签4&#xff09;dialog标签 6.1.3 文本标签1&#xff09;ruby标签2&#xff09;mark标签 6.2 表单标签6.2.1 H5新增input类型6…

Hive序列化和反序列化

序列化和反序列化 文件读取/解析的方式 create table t1( id int, name string ) row format delimited fields terminated by , ;0,7369,SMITH,CLERK,7902,1980-12-17,800,null,20从文件里进行查询时&#xff0c;会不会在内存里产生hive的相关对象啊select * from student;…

Goland 包导入正常,但是无法解析函数和成员属性,编译不报错

这段时间 Goland 突然出现了一个毛病&#xff0c;每次 go get 依赖后&#xff0c;虽然依赖拉下来了&#xff0c;但是代码里使用了这个 module 的地方无法引用出他的成员和属性&#xff0c;大片的标红&#xff0c;都提示「Unresolved reference xxxxx」&#xff0c;但是只要把项…

6月29日Mendix北京见面会,抓紧时间报名!

喜欢Mendix的小伙伴们&#xff0c;好消息来啦&#x1f4e2;&#xff01; 6月29日&#xff0c;Mendix北京社区活动将在这个炎热的夏日中隆重推出&#xff0c;一起来参加吧&#xff01; 听说这次meet-up的嘉宾们都在用心准备内容中&#xff0c;这次不仅有MX首席架构师Matt、懂中…