Go语言技术文章
-
Redis Cluster 遇到 CROSSSLOT 时,先用 CLUSTER KEYSLOT 找出不同槽位,再用业务 ID hash tag 重构相关 key,并评估迁移与热点风险。218 收藏 -
MySQL 切换事务隔离级别后查询结果仍不变,通常是当前事务已经建立了快照,或切换只作用于下一事务。本文用两个会话说明 REPEATABLE READ、READ COMMITTED、自动提交和锁定读的边界。307 收藏 -
用 INFO replication 对照主库与副本 offset,结合链路、同步状态和 backlog 覆盖范围,判断 Redis 副本是在追赶、断链还是需要全量同步。402 收藏 -
MySQL 分区表查询没走分区裁剪时,先看分区表达式,再用 EXPLAIN 的 partitions 列确认扫描范围,最后把过滤条件改成可被优化器推导的分区键等值或范围。134 收藏 -
从最近访问、累计频率、热点迁移和 TTL 设计几个维度比较 Redis 的 allkeys-lru 与 allkeys-lfu,并给出配置和观测检查清单。106 收藏 -
MySQL 死锁日志最先要找的是等待事务和阻塞事务。本文从 LATEST DETECTED DEADLOCK 读出两端关系,再用 data_lock_waits 关联事务、线程、表和 SQL,最后说明锁顺序、索引与安全重试的修复重点。467 收藏 -
解释 Redis WATCH 监视键在 EXEC 前被修改时为什么返回 nil,并用双客户端示意、有限重试和边界清单处理乐观锁冲突。159 收藏 -
MySQL JSON 数组不能直接按普通列建索引。本文用 InnoDB 多值索引把标量数组映射成可查询的索引记录,并说明 MEMBER OF、JSON_CONTAINS、JSON_OVERLAPS 及空数组、类型和排序限制。482 收藏 -
Redis Lua 返回 RESP3 map 时,客户端是否拿到字典取决于脚本内部的 redis.setresp(3) 与连接侧的 HELLO 3 是否分别配置正确。本文拆开两层协议,说明 RESP2 为何会把 map 展平成交替键值数组,并给出客户端解析检查表。379 收藏 -
MySQL 不可见索引适合用来评估索引替代方案:先核对候选索引和基线计划,再让优化器暂时忽略它,结合 EXPLAIN、慢查询与工作负载判断是否仍有依赖,最后决定恢复、替换还是删除。226 收藏 -
Redis Stream 消费组中的 pending 消息已经投递但尚未确认。本文用 XPENDING 检查 PEL 和空闲时间,再用 XAUTOCLAIM 批量重新认领超时消息,并说明何时使用 XCLAIM 与 XACK。207 收藏 -
从年龄计算的失败 DDL 出发,解释 MySQL 生成列的确定性要求,并对比动态查询、VIRTUAL、STORED 和生成列索引的选择。247 收藏 -
Redis ZRANGEBYLEX 适合在 Sorted Set 成员分值相同的前提下按字典序取范围。本文用 redis-cli 演示边界符号、LIMIT 分页、游标衔接及 Redis 6.2+ 的 ZRANGE BYLEX 替代写法。482 收藏 -
MySQL 按部门、店铺或其他分组取排名第二的记录,关键是先用窗口函数生成组内名次,再由外层查询过滤。本文比较 ROW_NUMBER、RANK 和 DENSE_RANK 的并列边界,并补充稳定排序、过滤层级与 NULL 值处理。478 收藏 -
Redis 过期通知收不到时,重点检查 notify-keyspace-events 是否包含 E 或 K 与 x、订阅频道是否匹配,以及 expired 事件的实际触发时机和 Cluster 节点范围。321 收藏