Redis学习(八):有序集合(Sorter Set)

网易后端面试全攻略:从八股文到系统设计,4轮面试真题深度解析 最近在牛客上看到不少同学分享网易后端面试的经历,有成功上岸的喜悦,也有被“拷打”到怀疑人生的迷茫。作为经历过多次大厂面试的过来人,我深知面试不仅是技术的较量,更是心态、准备和临场发挥的综合体现。本文将以一个典型的“211本科面网易后端,4轮面试”为背景,结合大量真实的网易面试真题,为你系统拆解后端面试的完整备战方案。无论你是即将参加秋招的应届生,还是寻求跳槽的开发者,这篇文章都将为你提供从简历准备、八股复习、算法刷题到项目深挖、面试技巧的全方位实战指南。 1. 网易后端面试全景:流程、风格与核心考察点 在开 阅读详情

一、介绍

与set的区别在于“有序”二字,再集合类型的基础上都关联了一个分数(score).

二、与列表的区别

相同点:

(1)二者都是有序的。(区别于排序)

(2)二者都可以获得某一范围内的元素。

不同点:

(1)列表是通过链表实现的,获取靠近两端的元素速度极快,而当元素增多以后访问中间数据的速度会较慢,所以它更适合实现如:新鲜事,日志等很少访问中间元素的应用;

(2)有序集合是使用散列表和跳跃表(skip list)实现的,所以即使读取位于中间部分的数据速度也很快(时间复杂度是O(log(N)));

(3)列表类型不能简单调整某个元素的位置,但是有序集合可以。(通过更改这个元素的分数);

(4)有序结合比列表更耗内存。

三、适用场景

1.按点击量、时间排序。

四、命令

1.增加元素

ZADD key score member [ score member ...]

向有序集合中加入一个元素及该元素的分数,如果该元素存在则会用新的分数替换掉原有的分数。返回新加入集合中的元素个数。分数不仅可以是整数,还支持双精度浮点数。

例:ZADD test +inf a -inf b;其中+inf,-inf分别表示正无穷大和负无穷大。

2.获得元素的分数

ZSCORE key member

3.获得排名在某一范围的元素列表

ZRANGE key start end [ WITHSCORES ]

ZREVRANGE key start end [ WITHSCORES ]

ZRANGE命令按元素分数从小到大的顺序返回索引从start到end之间的所有的元素(包含两端的元素,查询全部0 -1)。如果需要同时获取分数在命令后加上WITHSCORES。

ZRANGE命令的时间复杂度是O(log n+m)(其中n为有序集合的基数,m为返回的元素个数)。如果两个元素分数相同,Redis会按照字典顺序(0<9<A<Z<a<z)来进行排序。中文元素按照UTF-8编码进行排序。

ZREVRANGE命令代表从大到小返回。

3.获得指定分数范围的元素

ZRANGEBYSCORE key min max [WITHSCORES ] [ LIMIT offset count]

  • 按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max)的元素。
  • 如果希望分数范围不包含端点值,可以在分数前边加上“(”符号,min和max支持无穷大。
  • LIMIT offset count:在获取得元素列表的基础上向后偏移offset个元素,并且只获取前count个元素。

ZREVRANGEBYSCORE:从大到小,max在前,min在后。

4.增加某个元素的分数

ZINCRBY key increment member :返回更改后的分数,如果指定的元素不存在,在执行命令之前会先建立它并将分数赋为0再执行命令。

5.获得集合中元素的个数

ZCARD key

6.获得指定分数范围内的元素个数

ZCOUNT key min max

7.删除一个或多个元素

ZREM key member [ member ...]:返回成功删除的元素数量

8.按照排名范围删除元素

ZREMRANGEBYRANK key start end

9.按照分数范围删除元素

ZREMRANGEBYSCORE key start end

10.获取元素的排名

ZRANK key member

ZREVRANK key member

11.计算有序集合的交集、并集

ZINTERSTORE destination numkeys key [key... ] [WEIGHTS weight [weight... ]] [AGGREGATE|SUM|MIN|MAX]

destination键中函数的分数是由AGGREGATE参数决定的。

  1. SUM:元素的分数是每个参与计算的集合中该元素的分数的和
  2. MIN:元素的分数是每个参与计算的集合中该元素的分数的最小值
  3. MAX:元素的分数是每个参与计算的集合中该元素的分数的最大值

WEIGTHS 每个集合的在计算中所占的权重。

ZUNIONSTORE:计算交集。

 

C++高级设计模式与系统架构:从代码到架构的思维跃迁 设计模式是软件工程中解决常见问题的可复用方案模板,其核心原理在于通过封装变化、解耦依赖来提升代码的灵活性和可维护性。在C++大型系统开发中,恰当运用设计模式的技术价值尤为显著,它能有效应对代码腐化、提升模块复用性,是构建健壮、可扩展系统的基石。从创建型模式如工厂方法和单例模式,到结构型模式如适配器和装饰器,再到行为型模式如策略和观察者,这些模式为管理对象生命周期、组合复杂结构和协调对象交互提供了系统化方法。在实际应用场景中,设计模式常与C++特有的泛型编程、模板元编程结合,通过编译期多态和策略模式等高级技术 阅读详情

相关推荐

项目重构与自动化提效:从技术债务到可持续维护的工程实践

软件工程中的技术债务和架构僵化是长期项目维护的常见挑战。技术债务源于快速开发中的临时方案积累,而架构设计不适应业务增长会导致性能瓶颈。通过代码分层、CI/CD流水线等工程实践,可以系统化解决这些问题。自动化测试和部署流水线不仅能提升开发效率,还能减少人为错误。在微服务和云原生架构背景下,这些实践特别适用于电商、金融等高频迭代的业务场景。本文基于领域驱动设计和基础设施即代码等热词,分享了一套完整的项目重构方案,帮助团队实现从混乱到清晰的技术转型。

427

java jface table_JAVA.SWT/JFace: JFace篇之MVC的表格、树和列表(1)

《Eclipse SWT/JFACE 核心应用》 清华大学出版社 19 MVC的表格、树和列表19.1 MVC概述MVC是模型-视图=控制器(Model-View-Controller)设计模式的简称。MVC模式将数据与视图分开,通过控制器来控制与数据交互。JFace中有关实现MVC模式的控件都在org.eclipse.jface.viewers包下。所有的MVC控件都继承自View类,该类是一个...

weixin_28895791的博客 475

二分查找原理与Python高效实践:从算法本质到生产级优化

二分查找是一种基于有序序列的对数时间复杂度搜索算法,其核心原理是通过每次比较排除一半候选空间,实现O(log₂n)的稳定性能。相比线性扫描的O(n),它在大规模数据场景下具备显著的性能优势和可预测性,成为数据库索引、内存搜索、科学计算等领域的底层支撑技术。在Python中,bisect模块、NumPy的searchsorted及ORM查询均深度集成该算法,但正确使用需严格满足‘全局有序’前提,并规避重复元素、浮点精度、边界越界等典型陷阱。本文结合电商价格搜索等真实案例,详解手写实现要点、生态工具选型与压测调

weixin_34290631的博客 415

EAS BOS 常用增加过滤及排序

EntityViewInfo entryEvi = new EntityViewInfo();   FilterInfo filter = new FilterInfo();   filter.getFilterItems().add(     new FilterItemInfo("parent.id", editData.getId().toString())); //  filter

douml88的专栏 3205

OpenClaw生产级部署与百炼API深度调优实战

LLM Agent平台正从概念验证迈向企业级自动化落地,其核心挑战在于如何将大模型的推理能力与真实业务系统(数据库、HTTP服务、消息队列等)安全、稳定、可观测地集成。OpenClaw作为专注企业工作流编排的开源智能体运行时,通过Execution Graph执行图、Skill插件化机制和多层可观测性设计,提供了端到端的Agent工程化支撑。本文围绕生产环境最关键的三大技术支点——全栈基础设施适配(K8s/VM/边缘设备)、阿里云百炼API兼容性对接(含流式响应、鉴权、SSL优化)、以及I/O密集型Skil

weixin_33885676的博客 351

Vitis HLS 学习指南与实践教程

Vitis HLS 学习指南与实践教程摘要:本文系统介绍了AMD Vitis HLS工具及其应用。HLS技术将C/C++代码自动转换为硬件描述语言,显著提升FPGA开发效率(5-10倍)。文章对比了HLS与传统RTL设计的优势,包括抽象级别高、开发周期短、代码重用性强等特点。详细讲解了Vitis HLS工具链的核心功能,包括支持的C/C++特性(如任意精度数据类型)、开发流程(项目创建-代码编写-仿真-综合)以及关键优化技术(流水线、循环展开、数组分割等编译指示)。通过具体代码示例展示了HLS设计方法,为F

weixin_44707118的博客 1400

EAS BOS 在list界面增加过滤、排序及删除默认的过滤条件,及右键弹出

第一种方式  protected IQueryExecutor getQueryExecutor(IMetaDataPK arg0,       EntityViewInfo arg1) {      String id = getSelectedKeyValue();      EntityViewInfo evi =new EntityViewInfo();      try {

wwsq2的博客 4218

Vue项目实战:5分钟搞定高德地图离线部署(附避坑指南)

本文详细介绍了在Vue项目中实现高德地图离线部署的完整方案。针对内网或网络隔离环境,通过获取并改造JSAPI文件、下载组织地图瓦片数据,并集成vue-amap组件,实现地图功能的本地化运行。文中提供了核心代码、避坑指南及性能优化建议,帮助开发者快速构建稳定可靠的离线地图应用。

data3的博客 935

Redis入门(一)

一、Redis介绍 1.1 Redis是什么? Redis是一个高性能的key-value存储系统。Redis的出现,很大程度补偿了memcached这类key/value存储的不足,它可以支持更多的数据类型,比如字符串、链表、集合、有序集合和哈希等。除此以外,它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等不同语...

zhongliwen1981的专栏 525

CST-Python(Pycharm如何与CST联合仿真,获取S参数)

我们想使用Python与CST联合仿真,其实是不需要自己下载Python的,因为CST在下载的时候就自带了Python3.6,我们只需要找到并将软件的环境设置到相应位置,即可联合仿真。(我的保存路径为D:\Program Files (x86)\CST Studio Suite 2020,在寻找时可以将前面切换成自己的保存路径,后面不需要修改)在CST帮助文档(打开CST软件,按F11即可直接访问帮助文档)里面,进行如下操作,便可以看到CST适配的Python版本为Python3.6!

weixin_52696285的博客 5648

信贷审批中的那些坑:从零开始搭建风控策略体系的5个关键步骤

本文深入探讨了信贷审批中的风控策略体系搭建,从数据陷阱识别、规则冲突诊断到反欺诈攻防,提供了5个关键步骤的实战指南。重点解析了如何通过特征工程、决策树优化和模型可解释性技术,构建动态平衡的风控体系,有效降低逾期风险并提升审批效率。

weixin_29253711的博客 411

Java 集合SortedSet&SortedMap讲解

把每天重复的工作做好,把每次遇到的困难解决。 这次对java集合框架学习中的两个特殊的接口进行介绍:SortedSet和SortedMap, 这两个接口提供排序操作,实现他们的子类都具有接口中定义的功能。Set和Map本身不具备排序功能,提供了SortedMap和SortedSet接口之后可以在提供排序方案的同时,增加更多的获取集合特定位置元素的方法。类似:结合的第一个元素,最后一个元素,位于...

lidongxiu0714 2万+

Fastwhisper + Pyannote 实现 ASR + 说话者识别

最近在研究ASR相关的业务,也是调研了不少模型,踩了不少坑,ASR这块,目前中文普通话效果最好的应该是阿里的modelscope上的中文模型了,英文的话,还是非whisper莫属了,而且whisper很变态,粤语效果也还不错,因此,如果实际业务中需要涉及到不同的语言,还是更推荐whisper多一点faster-whisper是使用CTranslate2对OpenAI的Whisper模型的重新实现,CTranslate2是一个用于Transformer模型的快速推理引擎。

qq_44193969的博客 1万+

网易后端面试全攻略:从算法到系统设计的实战准备

这次我们来看一个211本科同学面试网易后端岗位的真实经历。这位同学经历了4轮面试,从简历筛选到技术面再到HR面,整个过程可以说是被“拷打”到怀疑人生。但最终的结果如何?是拿到了Offer还是遗憾离场?更重要的是,从这段经历中,我们能提炼出哪些对普通求职者真正有用的面试准备策略、技术复习重点和心态调整方法? 如果你正在准备互联网大厂的后端开发面试,特别是像网易这样的游戏公司或互联网公司,这篇文章会直接告诉你:面试到底考什么、怎么准备、以及如何避免那些让你“怀疑人生”的坑。我们不会空谈理论,而是基于牛客网上数百

weixin_34199335的博客 444

ESP32-CAM 赋能 AI 视觉巡检小车:自主避障与目标追踪实现全解析

本文基于 ESP32-CAM 实现了低成本 AI 视觉巡检小车的核心功能,硬件成本<100 元,兼顾自主避障与目标追踪。算法升级:移植 YOLOv5nano 量化模型(INT8),提升目标检测精度(如识别巡检场景中的 “异常物体”“人员”);无线拓展:通过 MQTT 协议将巡检图像、距离数据上传到阿里云 / 腾讯云,实现远程监控;多传感器融合:增加温湿度(DHT11)、红外测温(MLX90614)模块,扩展巡检维度;路径规划:结合 SLAM 算法,实现自主建图与路径巡检。

weixin_42300449的博客 367

Cadence PCB仿真使用Allegro PCB SI S参数配置方法图文教程

S参数即S-Parameter是指散射参数,描述信号在传输线中的正反向传输和正反向反射的情况。本文讲述在使用Allegro PCB SI进行信号完整性仿真前,S参数的配置方法。

fydar的博客 2177

SpringBoot+Vue助农电商平台开发与毕业设计实践

B2B电商系统通过信息化手段解决传统农产品流通环节的信息不对称问题。基于SpringBoot+Vue的全栈架构,采用三层架构设计实现前后端分离,结合Redis缓存优化与分布式锁解决高并发场景下的库存超卖问题。这类系统典型应用于农产品供应链管理,需要特殊处理商品保质期、产地溯源等业务特征。通过主从数据源配置、阿里云OSS存储等工程实践,构建包含供应商管理、在线交易等核心模块的完整解决方案。该技术方案特别适合作为计算机专业毕业设计选题,既能体现全栈开发能力,又能结合助农公益属性展现社会价值。

weixin_30765505的博客 292

【WRF理论第十五期】WPS中输入geogrid二进制格式

WPS中输入geogrid二进制格式

WW、forever的博客 1078

【SpringBoot篇】一文吃透SpringBoot自动装配原理:源码详解、实战案例及优缺点分析

SpringBoot 是目前 Java 后端主流开发框架绝大多数 Java 开发者日常开发都在使用SpringBoot自动装配,但多数开发者仅会使用,不了解SpringBoot自动装配底层源码执行,其最核心的优势是零XML配置、开箱即用、快速开发,彻底解决了传统 Spring 框架配置繁琐、Bean 需要手动注册、环境适配复杂、项目配置不统一等行业痛点。支撑 SpringBoot 极简开发能力的核心底层原理,就是SpringBoot自动装配机制,也是开发者学习 SpringBoot 底层源码的核心重点。

荏苒夕阳的博客 318

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C 语言面向对象编程与设计模式:用纯 C 实现 SOLID 原则

本文将系统展示:如何用纯 C 实现面向对象三大特性 + SOLID 五大原则 + 6 种经典设计模式。

sinat_41883985的博客 641

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Rust 面向对象编程与设计模式:所有权系统下的设计艺术

Rust 没有 `class`,没有继承,没有垃圾回收。初学者常困惑:"Rust 能面向对象吗?"

sinat_41883985的博客 392

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

算法与数据结构实战指南:从核心原理到工程优化

算法与数据结构是计算机科学的基础,它们定义了数据组织与问题求解的通用范式。理解其核心原理,如时间复杂度与空间复杂度分析,是评估算法效率、进行系统性能优化的关键。在工程实践中,合理选择数据结构(如哈希表、二叉搜索树、堆)和算法范式(如动态规划、贪心算法),能直接提升系统吞吐量、降低响应延迟,解决海量数据处理、高并发场景下的性能瓶颈。本文以牛津大学课程理念为参考,结合哈希表优化查询、动态规划解决重叠子问题等实战案例,系统梳理了从理论到代码的实现路径,为开发者构建清晰的问题分析与解决框架。

weixin_33796205的博客 319

从排序算法到排名系统:构建可扩展的多维度评分引擎

排序算法是计算机科学处理有序数据的基础,其核心原理在于通过比较和交换操作,将数据集合按特定规则重新排列。在工程实践中,排序的价值不仅在于数据整理,更在于支撑复杂的业务决策,如资源调度、用户画像和绩效评估。当排序需求从单一维度扩展到多维度加权评分时,便催生了排名系统这一技术概念。排名系统通过引入权重计算、可配置的排序策略和并列处理规则,将主观或多维度的评价需求转化为客观、可解释的技术方案。其典型应用场景包括电商商品推荐、人才评估体系和游戏排行榜等。本文以Python实现为例,探讨如何设计一个灵活、可扩展的排名

weixin_33859231的博客 329

后端开发六大高效工具:Apollo、MapStruct、Caffeine等实战指南

在微服务与高并发架构中,配置管理、对象映射和本地缓存是提升系统稳定性和性能的核心技术。配置管理通过集中化、动态更新的方式,解决了服务配置分散和变更繁琐的痛点,其技术价值在于实现应用的无缝热更新与统一治理。对象映射技术则专注于解决分层架构中不同数据模型间的转换问题,通过编译期代码生成,在保证类型安全的同时,提供了接近手写代码的高性能,极大提升了开发效率与代码可维护性。本地缓存作为缓解数据库压力的第一道防线,其高性能、灵活的过期与淘汰策略对系统响应速度至关重要。这些技术广泛应用于电商、金融、社交等需要快速迭代和

weixin_30855099的博客 388

SpringBoot+Vue小区物业管理系统开发实战

前后端分离架构是现代Web开发的主流模式,通过SpringBoot和Vue的技术组合可以实现高效的企业级应用开发。SpringBoot作为Java后端框架提供了自动配置、依赖管理等特性,Vue3则以其响应式系统和组合式API简化了前端开发。这种架构特别适合开发物业管理系统这类具有清晰业务逻辑的中型项目,能够实现用户管理、费用收缴、报修处理等核心功能。项目中运用Spring Security实现RBAC权限控制,采用MyBatis-Plus简化数据库操作,同时通过Element-UI快速构建管理界面,是学习全

weixin_30596343的博客 353

SpringBoot高校就业管理系统开发与架构设计

高校就业管理系统作为数字化校园建设的重要组成部分,基于SpringBoot框架实现学生、企业和校方的三方协同。系统采用前后端分离架构,结合Elasticsearch实现简历智能匹配,运用Redis缓存提升查询性能。在权限控制方面,采用Spring Security + JWT保障系统安全,通过MyBatis实现高效数据访问。这类系统不仅能提升就业管理效率,也为计算机专业毕业设计提供了典型的企业级应用场景。项目中涉及的自动配置、RESTful API设计、数据库优化等SpringBoot核心技术点,对理解现代

weixin_30732487的博客 425
上一篇: Redis学习(七):集合类型(Set)
下一篇: Redis学习(九):Redis进阶
life is ftc
博客等级 码龄9年 19粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值