- 博客(116)
- 收藏
- 关注
原创 快速上手protobuf
本文围绕使用 Protocol Buffers(Protobuf)实现 1.0 版本通讯录展开,旨在展示 Protobuf 的完整使用流程及基本语法。
2025-10-06 00:35:21
922
原创 Redis分布式锁
本文围绕 Redis 分布式锁展开,先介绍其定义(解决分布式系统资源竞争,通过 Redis 设 key-value 实现加锁),再讲解核心实现:用set ex nx原子加锁 + 过期时间防死锁,用服务器标识作 value 防误解锁,用 Lua 脚本保证 “校验 - 解锁” 原子性,用看门狗线程动态续约锁;最后提及 Redlock 算法(多主节点冗余,半数以上加锁成功即有效),解决 Redis 节点宕机及主从同步延迟导致的锁失效问题。
2025-10-04 13:42:49
554
原创 Redis 缓存
本文介绍 Redis 三大用途(内存数据库、缓存、消息队列),重点聚焦最常用的缓存场景。先解释缓存本质是用快设备暂存慢设备数据,Redis 作为 MySQL 缓存可缓解数据库并发压力;接着讲两种缓存更新策略(定期生成热点数据,简单但实时性差;实时生成按需加载,需配合内存淘汰策略);最后说明缓存使用注意事项,包括缓存预热(提前导入热点数据)、缓存穿透(空值缓存或布隆过滤器应对)、缓存雪崩(错开 key 过期时间、增强集群可用性)、缓存击穿(热点 key 永不过期或用分布式锁)的解决方案。
2025-10-04 13:34:47
901
1
原创 Redis 集群
本文介绍 Redis 集群,其核心解决存储空间不足问题。涵盖三种数据分片算法:哈希求余(扩容开销大)、一致性哈希(易数据倾斜)、Redis 采用的哈希槽分区算法(16384 个槽,平衡网络与分片需求)。讲解通过 Docker 搭建 “3 主 6 从” 集群,利用-c实现客户端请求重定向。还阐述主节点故障时从节点竞选新主的转移流程,以及集群扩容(添加节点、重分配哈希槽)等操作,同时提及集群宕机情况与应对重要性。
2025-10-04 13:22:33
695
原创 Redis 哨兵
本文围绕 Redis 哨兵机制展开,介绍其在主从复制架构中实现自动故障转移的核心作用。当主节点宕机时,哨兵机制通过独立的redis-sentinel进程(与redis-server进程分离,不存储数据仅负责监控),借助自动化流程让从节点晋升为主节点,避免人工干预的繁琐与失误。
2025-10-04 11:33:50
746
原创 Redis 主从复制
本文围绕 Redis 主从复制展开,系统解析其定位、实战配置、核心操作及底层原理,旨在解决 Redis 单节点可用性低与性能瓶颈问题。
2025-10-04 09:51:54
577
原创 Redis 事务
本文聚焦 Redis 事务的特性、原理与实践,重点对比其与 MySQL 事务的差异,明确 Redis 事务 “弱化版” 的定位及核心价值。
2025-10-02 13:53:02
1047
原创 C++ 操作 Redis
本文聚焦 C++ 环境下使用redis-plus-plus库操作 Redis 的完整流程,从环境搭建到核心命令实操,构建 “安装 - 连接 - 命令 - 优化” 的实践框架,帮助开发者快速掌握 C++ 与 Redis 的交互逻辑。
2025-10-01 20:36:07
1083
原创 Redis 数据库管理与通信基础
本文围绕 Redis 的基础操作与通信逻辑展开,系统解析数据库管理规则、客户端使用场景及 RESP 协议原理,搭建 “数据隔离 - 交互入口 - 通信语言” 的完整认知框架。
2025-10-01 18:38:12
604
原创 Redis 扩展数据类型
本文聚焦 Redis 除基础类型外的五大特殊数据类型 ——Stream、Geospatial、HyperLogLog、Bitmap 与 Bitfields
2025-10-01 12:06:52
573
原创 Redis Zset 类型全解析
本文围绕 Redis Zset(有序集合)展开全面解析,同时聚焦其底层核心结构跳表,构建 “类型特性 - 命令体系 - 编码逻辑 - 应用场景 - 跳表原理” 的完整知识链。
2025-10-01 12:06:13
949
原创 Redis Set 类型全解析
本文围绕 Redis Set 类型展开系统性解析,从核心特性、命令体系、底层编码到应用场景与实践优化,构建完整知识框架。
2025-09-30 22:52:20
793
原创 Redis List 类型全解析
本文围绕 Redis List 类型展开系统性解析,从核心特性、命令体系、底层编码到应用场景与优化逻辑,构建完整知识框架。
2025-09-30 22:27:48
1137
原创 Redis String 类型全解析
本文围绕 Redis String 类型展开全方位解析,从核心特性、命令体系、编码优化、应用场景到业务适配逻辑,构建了完整的知识框架。
2025-09-29 15:47:07
999
原创 redis通用命令
本文围绕 Redis 的基础命令与底层原理展开,系统梳理四类核心命令:键值对基础操作(set/get)、键的批量管理(keys/exists/del)、过期时间控制(expire/ttl)、数据类型查询(type),详细说明各命令的语法、特性与使用注意事项,重点警示keys命令的生产环境风险及del命令的误删影响。在此基础上,深入解析面试高频考点 “键过期策略”(定期删除 + 惰性删除),并拓展讲解优先级队列、时间轮两种定时器实现原理,揭示 Redis 策略选择的底层逻辑。
2025-09-28 15:43:48
1108
原创 环境搭建,Ubuntu 安装、客户端使用与性能认知
本文从 Ubuntu 的 Redis 安装实操切入,带你完成 “安装 - 配置 - 连接” 的全流程,拆解了三类客户端的适用场景,更澄清了 Redis 的性能边界。
2025-09-28 15:43:16
932
原创 从单机到分布式:系统架构演进的七步成长指南
本文以 “问题驱动演进” 为核心逻辑,系统拆解了从单机到分布式的 7 步架构成长路径。从单机架构的原始形态出发,依次讲解了应用与数据库分离、引入应用集群与负载均衡、实现数据库读写分离、部署 Redis 缓存、落地分库分表、拆分微服务的演进脉络,每一步均对应业务增长中出现的资源冲突、流量压力、存储瓶颈等具体问题。同时,文章前置解析了 Redis 的核心价值,补充了分布式领域易混淆的核心概念(如集群、主从、中间件等),并客观分析了微服务的利弊。
2025-09-28 11:45:29
882
原创 MySQL --视图
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。
2024-09-27 06:00:00
1063
原创 MySQL --索引(下)
索引覆盖是指索引上的信息足够满足查询请求,不需要再回到主键或数据表中去取数据。当查询可以完全利用索引中的数据满足查询需求时,就称之为索引覆盖。
2024-09-26 07:00:00
1386
原创 MySQL --事务
事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。事务就是要做的或所做的事情,主要用于处理操作量大,复杂度高的数据。
2024-09-26 05:00:00
1656
原创 MySQL --索引(上)
MySQL索引是数据库表中一个或多个列的值进行排序的一种数据结构,用于帮助MySQL高效地查询和更新数据表中的记录。索引可以极大地提高数据库的查询速度,但同时也可能会降低更新表的速度(如插入、删除和更新操作),因为数据库不仅需要维护数据,还需要维护索引。索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的 create index ,查询速度就可能提高成百上千倍。
2024-09-25 06:00:00
1015
原创 MySQL --复合查询
多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句。在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all。显示雇员名、雇员工资以及所在部门的名字因为上面的数据来自EMP和DEPT表,因此要联合查询。查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J。示例:查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人。显示平均工资低于2000的部门号和它的平均工资。
2024-09-24 07:00:00
1274
原创 MySQL --内置函数
要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值。这里把逗号替换成了“”,这个不计入长度,整体长度减除逗号外的长度等于逗号出现次数。md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串。显示所有留言信息,发布日期只显示日期,不用显示时间。请查询在2分钟内发布的帖子。
2024-09-24 06:00:00
422
原创 MySQL --基本查询(下)
在MySQL中,“截断表”(Truncate Table)是一个快速删除表中所有行数据的操作,但它不会删除表本身,也不会重置表的自增ID(这取决于表是否使用了AUTO_INCREMENT属性以及MySQL的版本和存储引擎)。相比,TRUNCATE TABLE语句通常执行得更快,因为它不记录每一行数据的删除操作到事务日志中,而是直接重新创建表(对于支持这种优化的存储引擎而言)。– 将 duplicate_table 的去重数据插入到 no_duplicate_table。对查询到的结果进行列值更新。
2024-09-23 12:48:04
1395
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人