Go语言技术文章
-
MySQL 递归 CTE 不应只靠 cte_max_recursion_depth 控制业务层级:先用 depth 条件正确结束递归,再用会话级参数设置安全上限,并说明全局参数与执行时间限制的边界。152 收藏 -
MySQL CTE 不一定会先生成临时结果。本文用一份可执行判断清单区分合并与物化,结合 EXPLAIN、MERGE/NO_MERGE 提示和 optimizer_switch,说明如何做局部实验、保留回滚路径并记录最终选择。441 收藏 -
本文围绕 MySQL EXPLAIN FORMAT=JSON,说明如何结合 key、used_key_parts、used_columns 和 rows_examined_per_scan 判断二级索引命中后是否需要回表,并给出覆盖索引与联合索引的取舍边界。403 收藏 -
用 MySQL 隐形索引验证二级索引下线风险,包含切换、会话级灰度、观察指标与快速回滚步骤。382 收藏 -
用 MySQL 窗口函数在指定时间范围内取每组最近的完整记录:先用半开区间过滤候选集,再用 ROW_NUMBER 稳定排名;同时说明 RANGE 与 ROWS 的时间窗口边界。230 收藏 -
Redis SPOP 用于从 Set 中随机取出并删除成员:不带 count 时取一个成员,带 count 时批量取出至多指定数量。本文解释空集合、数量超范围、key 删除以及与 SRANDMEMBER、SREM 的边界,帮助把随机取出真正用于可接受乱序的消费场景。303 收藏 -
数据库 · Redis | 2天前 | Redis · 慢查询 · 日志管理 · 性能排查 · redis slowlog 慢日志 SLOWLOG GET SLOWLOG LEN slowlog-max-len
Redis SLOWLOG 的读取数量和保留数量不是同一个参数。本文用 SLOWLOG GET、SLOWLOG LEN 与 slowlog-max-len 说明怎样读取最近慢日志、查看当前条数并控制日志容量。219 收藏 -
Redis Cluster 返回 MOVED 不是让应用盲目重试,而是告诉客户端 key 所在哈希槽和负责节点。本文说明 redis-cli -c、集群客户端与槽位映射的选择,并区分 MOVED、ASK、CROSSSLOT。415 收藏 -
Redis Stream 需要限制长度时,可以在 XADD 中直接使用 MAXLEN。本文说明 MAXLEN = 与 MAXLEN ~ 的差异、LIMIT 的真实作用,以及如何在消息保留边界和写入吞吐之间做选择。290 收藏 -
Redis 缓存穿透排查时,GET 返回空并不等于同一种情况。本文用 hit、negative、miss 三种状态区分真实记录、空值占位和未缓存,并给出 TTL、SET EX NX 与指标设计。397 收藏 -
用 Redis ROLE 快速识别当前实例是 master、replica 还是 sentinel,并按角色读取复制偏移量、主节点地址、连接状态和集群范围边界。422 收藏 -
Redis SCAN 返回的 cursor 是下一次续读的位置,不是已扫描比例。本文解释为什么游标不能换算成百分比,如何用回到 0 判断一轮结束,COUNT 的真实含义,以及动态 keyspace、重复返回和业务进度的处理方式。304 收藏 -
Redis WATCH 事务是否放弃,要看 EXEC 的最终返回值:数组表示队列已执行,nil 或 null 表示监视键在执行前变化而导致事务中止。本文用 redis-cli 和 go-redis 区分竞争失败、命令错误与可控重试。118 收藏 -
Redis Lua 中 redis.call 遇到命令运行错误会直接终止脚本,而 redis.pcall 会把错误回复交回 Lua。本文用最小示例说明如何检查 reply.err、区分空结果与命令错误、返回稳定业务状态,并说明 pcall 与客户端重试、写入副作用的边界。391 收藏 -
Redis 7.4 开始支持 Hash 字段级过期,已有字段用 HEXPIRE 设置 TTL 并用 HTTL 检查;Redis 8.0+ 若要写入值时同时设置过期,可使用 HSETEX。本文对比字段过期与整键过期,并整理版本边界、条件参数和常见误区。487 收藏