Go语言技术文章
-
Redis ZSET 按分数查询优先使用 ZRANGE ... BYSCORE,旧版本可用 ZRANGEBYSCORE。本文说明闭区间、开区间、无界范围、倒序、WITHSCORES、LIMIT 和 ZCOUNT 的写法,并解释如何控制返回量。484 收藏 -
Redis Hash 多字段读取可用 HMGET,Redis 8.0 起还可用 HGETEX 同时设置所选字段 TTL。对照整键 EXPIRE、字段过期、版本兼容与续期副作用,说明如何按缓存生命周期选择。104 收藏 -
Redis Stream 消费组重复收到同一条消息,通常不是 Stream 自动复制,而是上次投递没有完成 XACK,消息留在 PEL 后被重新读取或转交。本文按值班排障顺序定位原因,并给出幂等、转交和确认的收口方法。463 收藏 -
Redis Stream 的 XREAD COUNT 只限制本次返回消息数量,不是全局限流。本文说明它与读取游标、BLOCK、多 Stream 以及 XREADGROUP 的边界。166 收藏 -
Redis Stream 消费者组的待处理消息位于 PEL 中,本文用 XPENDING 依次查看摘要、范围明细、消费者归属和空闲时间,并说明何时使用 XAUTOCLAIM、XCLAIM 与 XACK。250 收藏 -
Redis JSON.SET 只能在根路径创建不存在的 JSON 文档;已有父对象时可以新增最后一级成员,但不能自动补齐缺失的中间路径。本文用返回值和命令示例拆开这三个边界。204 收藏 -
Redis EXPIRE 默认会覆盖已有 TTL。如果业务只允许新过期时间更短,可以使用 EXPIRE key seconds LT,让 Redis 在服务端比较过期时间并返回 1 或 0。本文结合 TTL、NX、XX 和 PEXPIRE 说明缓存刷新与并发场景的用法。244 收藏 -
Redis JSON.SET 配合根路径和 XX 可仅更新已有文档,但子路径 XX 还要求字段存在。通过局部更新与整份替换示例,说明未命中处理、存在性竞态和版本锁边界。173 收藏 -
Redis CLIENT PAUSE WRITE 适合在主节点升级或故障转移前短暂暂停写命令。本文给出控制连接、复制观察、切换和 CLIENT UNPAUSE 的协作步骤,并说明 WRITE、ALL、超时和回滚边界。458 收藏 -
MySQL 时间范围查询没有用上索引,通常要从时间列是否被函数包裹、EXPLAIN 计划、复合索引顺序和优化器成本判断。本文用 DATETIME 半开区间给出排查与修复方法。139 收藏 -
Redis GETDEL 将读取字符串值和删除键放在一条命令中,适合单键无条件的一次性消费。本文说明 Go 调用、未命中、类型错误以及需要条件或跨键原子性时的替代边界。306 收藏 -
MySQL 大表使用 LIMIT offset, size 翻到后页时,会先扫描并丢弃大量记录。本文用稳定排序、联合索引和 keyset pagination 改造查询,并说明倒序、重复时间戳和末页的处理方式。490 收藏 -
MySQL 的 UPDATE 和 DELETE 也可以先用 EXPLAIN 观察读取路径。本文从 type、key、rows、filtered 和 JSON 计划入手,说明怎样识别全表扫描、估算偏差与写入前的范围风险。343 收藏 -
MySQL 递归 CTE 的层级停止条件应写在递归成员的 WHERE 中,用 depth 控制下一层是否生成,再用递归深度和执行时间限制兜底。392 收藏 -
MySQL EXPLAIN 的 rows 是优化器估算值,不等于实际扫描量。本文用 EXPLAIN ANALYZE 对照 actual rows、loops 和耗时,再通过 ANALYZE TABLE、直方图与索引检查定位偏差。419 收藏