- 如何使用 Redis实现排行榜?排行榜是实际生活中很常见的一个概念,比如在某些平台上,我们可以根据一些指标,如关注量、点赞量、评论量等进行排行,以便了解平台中的热门内容和活跃用户。这篇文章,我们来分析如何用 Redis实现排行榜。1. 为什么选择 Redis 的有序集合首先要声明的是:我们将使用 Redis 的 有序集合(Sorted Sets) 数据结构来实现排行榜。那么,为什么要选择 S... 如何使用 Redis实现排行榜?排行榜是实际生活中很常见的一个概念,比如在某些平台上,我们可以根据一些指标,如关注量、点赞量、评论量等进行排行,以便了解平台中的热门内容和活跃用户。这篇文章,我们来分析如何用 Redis实现排行榜。1. 为什么选择 Redis 的有序集合首先要声明的是:我们将使用 Redis 的 有序集合(Sorted Sets) 数据结构来实现排行榜。那么,为什么要选择 S...
- Redis到底能不能保证原子性?1. 原子性要想弄清楚这个问题,我们需要对“原子性”这个概念有一个清晰的认识,因此,首先要分析的是原子性的概念。通常意义的原子性通常意义上,我们说的原子性是指关系型数据库 RDBMS(比如 MySQL)的原子性,也就是 ACID(Atomicity、Consistency、Isolation、Durability)中 Atomicity这一项特性。ACID 中... Redis到底能不能保证原子性?1. 原子性要想弄清楚这个问题,我们需要对“原子性”这个概念有一个清晰的认识,因此,首先要分析的是原子性的概念。通常意义的原子性通常意义上,我们说的原子性是指关系型数据库 RDBMS(比如 MySQL)的原子性,也就是 ACID(Atomicity、Consistency、Isolation、Durability)中 Atomicity这一项特性。ACID 中...
- 招行2面:Redis 为什么要RDB 和 AOF两种持久化方式?直接写日志不行吗?这篇文章,我们来分享 Redis是如何实现持久化以及Redis 为什么要采用 RDB 和 AOF两种持久化方式。1. 什么是持久化?持久化,Persistence,把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。这样可以保证程序在服务器宕机后,重新启动不会丢失数据。2. 持久化方式Redis 的... 招行2面:Redis 为什么要RDB 和 AOF两种持久化方式?直接写日志不行吗?这篇文章,我们来分享 Redis是如何实现持久化以及Redis 为什么要采用 RDB 和 AOF两种持久化方式。1. 什么是持久化?持久化,Persistence,把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。这样可以保证程序在服务器宕机后,重新启动不会丢失数据。2. 持久化方式Redis 的...
- Redis的 9种数据结构,如何选择?作为一名合格的 Redis 使用者,我们一定要知道 Redis 有哪数据类型,以及每种数据类型的特征,操作方式和应用场景,这样才能帮助我们更好地决策使用哪种数据类型。本文我们将详细地介绍 Redis 9种数据类型:字符串(String)列表(List)集合(Set)有序集合(Sorted Set)哈希(Hash)位图(Bitmap)HyperLogLog... Redis的 9种数据结构,如何选择?作为一名合格的 Redis 使用者,我们一定要知道 Redis 有哪数据类型,以及每种数据类型的特征,操作方式和应用场景,这样才能帮助我们更好地决策使用哪种数据类型。本文我们将详细地介绍 Redis 9种数据类型:字符串(String)列表(List)集合(Set)有序集合(Sorted Set)哈希(Hash)位图(Bitmap)HyperLogLog...
- 7种常见的限流方式!在实际应用中,每个系统或者服务都有其处理能力的极限(瓶颈),即便是微服务中有集群和分布式的夹持,也不能保证系统能应对任何大小的流量,因此,系统为了自保,需要对处理能力范围以外的流量进行“特殊照顾”(比如,丢弃请求或者延迟处理),从而避免系统卡死、崩溃或不可用等情况,保证系统整体服务可用。这篇文章,我们来分析7种常见的限流方式。1. 令牌桶算法令牌桶算法(Token Buc... 7种常见的限流方式!在实际应用中,每个系统或者服务都有其处理能力的极限(瓶颈),即便是微服务中有集群和分布式的夹持,也不能保证系统能应对任何大小的流量,因此,系统为了自保,需要对处理能力范围以外的流量进行“特殊照顾”(比如,丢弃请求或者延迟处理),从而避免系统卡死、崩溃或不可用等情况,保证系统整体服务可用。这篇文章,我们来分析7种常见的限流方式。1. 令牌桶算法令牌桶算法(Token Buc...
- 在 Redis 的 Lua 脚本中,SET 类型(即 Redis 的字符串类型)虽然看似简单,但结合 Lua 的逻辑控制能力后,可以高效实现许多复杂场景。以下是 SET 类型在 Lua 脚本中的典型使用场景及代码示例,涵盖原子操作、条件判断、分布式锁等核心需求。 1. 原子性计数器场景:实现一个原子性的计数器,支持递增、递减、重置等操作。优势:Lua 脚本保证整个计数过程的原子性,避免竞态条... 在 Redis 的 Lua 脚本中,SET 类型(即 Redis 的字符串类型)虽然看似简单,但结合 Lua 的逻辑控制能力后,可以高效实现许多复杂场景。以下是 SET 类型在 Lua 脚本中的典型使用场景及代码示例,涵盖原子操作、条件判断、分布式锁等核心需求。 1. 原子性计数器场景:实现一个原子性的计数器,支持递增、递减、重置等操作。优势:Lua 脚本保证整个计数过程的原子性,避免竞态条...
- Redis 的 EVAL 和 EVALSHA 命令用于执行 Lua 脚本,它们是 Redis 实现复杂原子操作的核心工具。以下是它们的详细使用方法、区别、优化技巧及实战示例。 1. EVAL 命令 语法EVAL script numkeys key [key ...] arg [arg ...]script:Lua 脚本内容(字符串形式)。numkeys:脚本中使用的 Redis 键的数量(... Redis 的 EVAL 和 EVALSHA 命令用于执行 Lua 脚本,它们是 Redis 实现复杂原子操作的核心工具。以下是它们的详细使用方法、区别、优化技巧及实战示例。 1. EVAL 命令 语法EVAL script numkeys key [key ...] arg [arg ...]script:Lua 脚本内容(字符串形式)。numkeys:脚本中使用的 Redis 键的数量(...
- Redis 结合 Lua 脚本是一种强大的组合,能够以原子性、高性能的方式实现复杂逻辑。Lua 脚本在 Redis 中会被当作一个整体执行,期间不会中断,从而保证操作的原子性。以下是详细说明和实战示例: 1. 为什么在 Redis 中使用 Lua?原子性:整个脚本作为一个事务执行,不会被其他命令打断。减少网络开销:将多个操作合并为一个脚本,减少客户端与 Redis 之间的通信次数。灵活性:支... Redis 结合 Lua 脚本是一种强大的组合,能够以原子性、高性能的方式实现复杂逻辑。Lua 脚本在 Redis 中会被当作一个整体执行,期间不会中断,从而保证操作的原子性。以下是详细说明和实战示例: 1. 为什么在 Redis 中使用 Lua?原子性:整个脚本作为一个事务执行,不会被其他命令打断。减少网络开销:将多个操作合并为一个脚本,减少客户端与 Redis 之间的通信次数。灵活性:支...
- Redis 的原子性操作是其核心特性之一,能够确保在多客户端并发访问时数据的一致性。以下是关于 Redis 原子性操作的详细说明: 1. 原子性定义原子性操作指一个操作要么完全执行成功,要么完全不执行,中间不会出现部分完成的状态。Redis 的原子性操作在单命令和事务中均有体现。 2. 单命令的原子性Redis 的所有单命令都是原子性的,包括:字符串操作:SET, GET, INCR, DE... Redis 的原子性操作是其核心特性之一,能够确保在多客户端并发访问时数据的一致性。以下是关于 Redis 原子性操作的详细说明: 1. 原子性定义原子性操作指一个操作要么完全执行成功,要么完全不执行,中间不会出现部分完成的状态。Redis 的原子性操作在单命令和事务中均有体现。 2. 单命令的原子性Redis 的所有单命令都是原子性的,包括:字符串操作:SET, GET, INCR, DE...
- 关系数据库(RDBMS)和非关系数据库(NoSQL)是两种核心的数据存储技术,它们在数据模型、设计理念、适用场景等方面存在显著差异。以下是两者的详细对比: 一、核心定义关系数据库(RDBMS)基于关系模型,数据以表格(二维表)形式存储,表与表之间通过外键关联。遵循ACID(原子性、一致性、隔离性、持久性)原则,保证事务的严格可靠性。代表产品:MySQL、PostgreSQL、Oracle、S... 关系数据库(RDBMS)和非关系数据库(NoSQL)是两种核心的数据存储技术,它们在数据模型、设计理念、适用场景等方面存在显著差异。以下是两者的详细对比: 一、核心定义关系数据库(RDBMS)基于关系模型,数据以表格(二维表)形式存储,表与表之间通过外键关联。遵循ACID(原子性、一致性、隔离性、持久性)原则,保证事务的严格可靠性。代表产品:MySQL、PostgreSQL、Oracle、S...
- Redis 的 maxmemory-policy 是内存管理的核心策略,用于在内存接近或超过 maxmemory 限制时,自动淘汰(Evict)键以释放空间。正确配置该策略能避免 OOM(Out of Memory)错误,并优化缓存命中率。以下是 详细解析,涵盖策略类型、选择依据、配置方法及实战案例。 一、为什么需要 maxmemory-policy?当 Redis 的内存使用达到 maxm... Redis 的 maxmemory-policy 是内存管理的核心策略,用于在内存接近或超过 maxmemory 限制时,自动淘汰(Evict)键以释放空间。正确配置该策略能避免 OOM(Out of Memory)错误,并优化缓存命中率。以下是 详细解析,涵盖策略类型、选择依据、配置方法及实战案例。 一、为什么需要 maxmemory-policy?当 Redis 的内存使用达到 maxm...
- 调整 Redis 内存分配是优化性能、避免内存碎片和 OOM(Out of Memory)错误的关键步骤。Redis 的内存管理涉及配置参数、分配器策略、数据结构优化等多个层面。以下是系统性调整方案,涵盖配置、监控和实战技巧。 一、核心配置参数调整 1. 设置内存上限(maxmemory)作用:限制 Redis 使用的最大内存,防止耗尽系统资源。配置方式:# redis.conf 中设置(推... 调整 Redis 内存分配是优化性能、避免内存碎片和 OOM(Out of Memory)错误的关键步骤。Redis 的内存管理涉及配置参数、分配器策略、数据结构优化等多个层面。以下是系统性调整方案,涵盖配置、监控和实战技巧。 一、核心配置参数调整 1. 设置内存上限(maxmemory)作用:限制 Redis 使用的最大内存,防止耗尽系统资源。配置方式:# redis.conf 中设置(推...
- Redis 的 OOM(Out of Memory)错误通常发生在内存使用超过配置限制(maxmemory)且没有有效的淘汰策略(Eviction Policy)释放内存时。以下是触发 OOM 错误的场景、原理及防范方法,帮助你理解并避免此类问题。 一、OOM 错误的触发条件Redis 触发 OOM 需满足以下两个核心条件:内存使用超过 maxmemory 限制在 redis.conf 中通... Redis 的 OOM(Out of Memory)错误通常发生在内存使用超过配置限制(maxmemory)且没有有效的淘汰策略(Eviction Policy)释放内存时。以下是触发 OOM 错误的场景、原理及防范方法,帮助你理解并避免此类问题。 一、OOM 错误的触发条件Redis 触发 OOM 需满足以下两个核心条件:内存使用超过 maxmemory 限制在 redis.conf 中通...
- Redis 内存碎片化是长期运行后常见的性能问题,会导致实际可用内存减少、内存分配效率下降,甚至触发 OOM(Out of Memory)错误。以下是系统性解决方案,涵盖配置优化、操作规范和监控手段,帮助你高效避免内存碎片化。 一、内存碎片化的成因 1. 频繁的内存分配与释放Redis 的键值对在内存中动态分配,频繁的 SET/DEL 操作会导致内存空间被分割成不连续的小块。示例:删除一个大... Redis 内存碎片化是长期运行后常见的性能问题,会导致实际可用内存减少、内存分配效率下降,甚至触发 OOM(Out of Memory)错误。以下是系统性解决方案,涵盖配置优化、操作规范和监控手段,帮助你高效避免内存碎片化。 一、内存碎片化的成因 1. 频繁的内存分配与释放Redis 的键值对在内存中动态分配,频繁的 SET/DEL 操作会导致内存空间被分割成不连续的小块。示例:删除一个大...
- Redis 的惰性删除(Lazy Deletion)机制虽然能减少删除操作对性能的影响,但可能导致已过期或被删除的键长期占用内存,尤其是在高并发写入或大量键设置短过期时间的场景下。以下是系统性解决方案,帮助你优化内存使用: 一、理解惰性删除的原理与问题 1. 惰性删除的工作机制Redis 不会主动扫描并删除过期键,而是在访问键时检查其是否过期:如果过期,则删除键并返回空结果。如果未过期,则正... Redis 的惰性删除(Lazy Deletion)机制虽然能减少删除操作对性能的影响,但可能导致已过期或被删除的键长期占用内存,尤其是在高并发写入或大量键设置短过期时间的场景下。以下是系统性解决方案,帮助你优化内存使用: 一、理解惰性删除的原理与问题 1. 惰性删除的工作机制Redis 不会主动扫描并删除过期键,而是在访问键时检查其是否过期:如果过期,则删除键并返回空结果。如果未过期,则正...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢
2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考
2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本
2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签