- 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 不会主动扫描并删除过期键,而是在访问键时检查其是否过期:如果过期,则删除键并返回空结果。如果未过期,则正...
- Redis 提供了丰富的命令集,除了基本的键值操作和过期时间设置外,还有许多强大的命令可用于数据结构操作、事务处理、发布订阅、集群管理等。以下是 Redis 中一些最常用且实用的命令分类及示例: 一、字符串(String)相关命令字符串是 Redis 最基础的数据结构,适用于缓存、计数器等场景。命令作用示例SET key value [EX seconds] [PX milliseconds... Redis 提供了丰富的命令集,除了基本的键值操作和过期时间设置外,还有许多强大的命令可用于数据结构操作、事务处理、发布订阅、集群管理等。以下是 Redis 中一些最常用且实用的命令分类及示例: 一、字符串(String)相关命令字符串是 Redis 最基础的数据结构,适用于缓存、计数器等场景。命令作用示例SET key value [EX seconds] [PX milliseconds...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中 -
一个AI团队帮你写代码:华为云码道Agent Space实战2026/06/25 周四 19:00-21:00
张翰文-华为云码道工程师/郭英旭-青软创新科技集团股份有限公司 软件架构师
本场直播聚焦华为云码道Agent Space两大模式:研发办公、代码开发,亲身体验从需求到代码的AI自动化能力。实操演示基于华为 CodeArts CLI,依托 OpenSpec 规格体系从零搭建业务项目。
回顾中
热门标签