最新发布

Redis 修炼之路【第8讲:Hash 适合存对象吗】

Redis

本文介绍了 Redis 中 Hash 类型的特点和应用场景。Hash 支持在单个 key 下存储多个字段,可独立读写字段值,避免了 String 类型存 JSON 时整体读写的弊端。底层采用 ziplist(字段少时)或 hashtable(字段多时)两种编码结构。与 String 存 JSON 相比,Hash 适合字段多、频繁修改单个字段的场景,如用户信息、商品详情等,并以购物车为例展示了具体操作命令。String 则更适合字段少、整体读写的场景。Hash 提供了更灵活高效的对象存储方案。

辰风沐阳 阅读 41 2026-07-10

Redis 修炼之路【第7讲:String 为什么是万能结构】

Redis

Redis 的 String 结构底层采用 SDS(Simple Dynamic String),相比C原生字符串具有 O(1) 获取长度和二进制安全的优势。String 支持三种编码(int、embstr、raw),根据数据自动选择以优化内存和性能。其应用场景广泛: 缓存:存储高频查询结果,减轻数据库压力; 计数器:原子操作incr实现阅读量、点赞统计; 分布式锁:基础版通过 set nx ex 实现; 验证码:设置过期时间自动清理; 分布式 Session:解决多服务器 Session 共享问题。

辰风沐阳 阅读 43 2026-07-09

Redis 修炼之路【第6讲:Redis 为什么是单线程】

Redis

Redis 的单线程设计解析:6.0版本后网络IO多线程化,但命令执行仍保持单线程。单线程优势在于避免锁竞争和上下文切换,内存操作速度极快(纳秒级),性能瓶颈主要在网络IO。6.0引入多线程处理网络请求(配置4-8个线程),但核心逻辑保持单线程以保证简单高效。需警惕大key和慢命令(如keys*/hgetall等)造成的阻塞风险,建议使用scan系列命令替代。该设计平衡了性能与复杂度,网络吞吐成为主要优化方向。

辰风沐阳 阅读 54 2026-07-08

Redis 修炼之路【第5讲:Redis 常用命令实战】

Redis

本文介绍了 Redis 常用命令操作,分为 Key 操作和五大核心数据结构(String、Hash、List、Set、ZSet)的使用方法。主要内容包括:keys/del/ttl 等通用命令;字符串的 incr/setnx 操作;哈希表的字段管理;列表的阻塞弹出;集合的运算操作;有序集合的排名控制等。还给出了 info/dbsize 等管理命令,并强调生产环境避免使用 keys * 和 flushdb 危险命令。作者建议读者通过实践掌握这些基础操作,为后续理解Redis单线程特性等高级话题打下基础。

辰风沐阳 阅读 45 2026-07-07

Redis 修炼之路【第4讲:Redis 五大核心数据结构】

Redis

Redis 核心数据结构包括5种类型:String(字符串,适合存单值/计数器)、Hash(哈希,适合存对象字段)、List(列表,支持队列操作)、Set(集合,自动去重并支持集合运算)、ZSet(有序集合,带分数排序)。String 使用存单值,Hash 适合存对象,List 可实现消息队列,Set 能高效处理共同好友等场景,ZSet 天然支持排行榜。选择依据数据特性:单值用 String,对象用 Hash,队列用 List,去重用 Set,排序用 ZSet。这些结构覆盖了大部分缓存和使用场景需求。

辰风沐阳 阅读 42 2026-07-06

RabbitMQ 消息队列【第18讲:Fanout Exchange 广播模式】

RabbitMQ

本文介绍了 RabbitMQ 的 Fanout Exchange 模式,适用于需要广播消息的场景。与 Direct Exchange 的精确投递不同,Fanout Exchange 会将消息无条件转发给所有绑定的队列,无需指定路由键。典型应用如用户注册后同时触发邮件、优惠券发放和数据分析等操作。文章通过 PHP 代码演示了 Fanout Exchange 的声明、队列绑定和消息发布流程,并对比了 Fanout 和 Direct 两种模式的特点:Fanout 实现"一发多收"的广播机制,而 Direct 则是"精确投递"。

辰风沐阳 阅读 54 2026-07-05

Redis 修炼之路【第3讲:手把手安装 Redis】

Redis

本文介绍了在不同操作系统上安装 Redis 的方法:Mac 用户可通过 Homebrew 快速安装;Linux 推荐源码编译安装,详细说明了下载、编译和后台启动步骤;Docker 方式简单快捷;Windows 仅支持旧版本,适合本地测试。最后通过几条基本命令验证Redis安装成功,为后续学习提供了可操作环境。Redis 官方不原生支持 Windows,不建议直接在 Windows 本机直接下载 Redis 使用,可以通过 Docker 安装 Redis 使用

辰风沐阳 阅读 77 2026-07-05

Redis 修炼之路【第2讲:Redis 到底是什么】

Redis

Redis 是一种基于内存的远程字典服务(Remote Dictionary Server),核心功能是通过 Key-Value 方式高速存取数据。它支持五种主要数据结构(String、Hash、List、Set、ZSet),常用于缓存热点数据、实现排行榜、分布式锁、计数器等功能。与 MySQL 的关系是互补而非替代,MySQL 负责持久化全量数据,Redis 则作为高速缓存层提升性能。典型应用场景包括:减轻数据库压力、实时排行榜、并发控制、访问计数和会话共享等。

辰风沐阳 阅读 119 2026-07-04

RabbitMQ 消息队列【第17讲:Direct Exchange 精确匹配】

RabbitMQ

本文介绍了 RabbitMQ 中 Direct Exchange(直连交换机)的使用场景和实现方式。Direct Exchange 通过精确匹配路由标识实现消息的精准投递,适用于需要严格区分消息类型的场景,如日志分级处理系统。文章通过 PHP 代码示例展示了如何声明 Direct Exchange、绑定队列(error_queue、warning_queue、info_queue)并指定路由键(error/warning/info),实现不同级别日志的定向分发。

辰风沐阳 阅读 65 2026-07-04

RabbitMQ 消息队列【第16讲:Exchange 到底是什么】

RabbitMQ

本文围绕 RabbitMQ 交换机 Exchange 展开讲解,先通过电商下单场景分析生产者直接向多队列发送消息存在耦合严重、代码冗余、灵活性不足等缺陷;随后介绍 Exchange 的核心价值:作为生产者与队列的中间层,生产者仅将消息发送至交换机,由交换机依据对应规则完成消息路由分发。文中阐述 Exchange 两大核心工作流程,并梳理 Direct、Fanout、Topic、Headers 四种交换机的不同匹配路由规则;最终总结使用 Exchange 可解耦生产者与队列,新增或调整下游队列无需修改生产者代码,统一管理消息路由逻辑,区分生产者 “发送消息”、交换机 “分发消息” 的职责,文末预告下一讲将讲解 Direct 交换机。

辰风沐阳 阅读 92 2026-07-03

RabbitMQ 消息队列【第15讲:消息除了内容还能携带什么信息】

RabbitMQ

本文介绍了 RabbitMQ 消息的属性机制,重点解析了消息的"快递单"功能。文章首先通过类比快递包裹,说明消息除了业务数据(body)外,还能通过属性(properties)传递元信息。详细讲解了两个核心属性:delivery_mode (投递模式,控制消息持久化) 和 content_type (内容类型,指定消息体格式),并给出 PHP 代码示例。此外还列举了其他可选属性如优先级、过期时间等。最后指出消费者可以读取这些属性信息,并预告后续将讲解 Exchange 交换机的相关内容。全文强调了消息属性对消息处理方式的重要影

辰风沐阳 阅读 143 2026-07-02

Redis 修炼之路【第1讲:Redis 为什么这么快】

数据库 Redis

Redis高效的核心原因可归纳为五点:1. 数据全内存操作,避免磁盘 I/O;2. 单线程模型消除锁竞争和线程切换开销;3. epoll 多路复用机制高效管理海量连接;4. 精心设计的底层数据结构(如 SDS、跳表等)针对不同场景优化;5. 采用 C 语言编写直接编译为机器码,无解释器性能损耗。这些特性使 Redis 成为高性能键值数据库的典范,尤其适合对延迟敏感的场景。理解这些设计原理不仅能应对面试,更能掌握性能优化核心思想。

辰风沐阳 阅读 140 2026-07-02

标签云

友情链接