Go语言技术文章
-
MySQL 按部门、店铺或其他分组取排名第二的记录,关键是先用窗口函数生成组内名次,再由外层查询过滤。本文比较 ROW_NUMBER、RANK 和 DENSE_RANK 的并列边界,并补充稳定排序、过滤层级与 NULL 值处理。478 收藏 -
Redis BITFIELD 默认使用 WRAP;本文对比 WRAP、SAT、FAIL 的溢出语义,并从位宽、offset、作用范围和返回 nil 四个方向排查策略不生效。473 收藏 -
Redis 同时开启 RDB 和 AOF 后,常规重启会优先使用 AOF 重建数据集;RDB 主要承担紧凑备份和较快恢复,本文按数据窗口、启动速度与重启前检查说明如何做取舍。470 收藏 -
Redis XREADGROUP 使用 BLOCK 参数控制没有新消息时的等待时长:BLOCK 2000 表示最多等待 2 秒,BLOCK 0 表示无限等待;读取待处理消息时使用非 > 的 ID,BLOCK 不会生效。469 收藏 -
MySQL 死锁日志最先要找的是等待事务和阻塞事务。本文从 LATEST DETECTED DEADLOCK 读出两端关系,再用 data_lock_waits 关联事务、线程、表和 SQL,最后说明锁顺序、索引与安全重试的修复重点。467 收藏 -
MySQL 分区表清理历史数据时,DROP PARTITION 为什么通常比逐行 DELETE 更快?本文从分区边界、索引与日志工作粒度解释差异,并给出执行前后的核对清单。461 收藏 -
Redis Sorted Set 按字典序查询时,关键是让成员使用相同 score,再用 ZRANGE BYLEX 配置包含或排除边界;本文给出范围写法、分页和空结果排查清单。461 收藏 -
Redis 缓存键如果使用相同 TTL,批量写入后可能在同一时间段集中失效。本文用 Go 示例演示如何加入可控随机抖动,并区分首次回填、刷新和热点保护。460 收藏 -
EXPIRE 只能让整个 Redis Hash key 过期,不能单独淘汰某个 field。Redis 7.4.0 起可用 HEXPIRE、HPEXPIRE 设置字段级 TTL;旧版本则应按生命周期拆分 key。456 收藏 -
联合索引遇到中间列范围条件后,后列通常不能继续缩小同一个连续扫描区间。本文用键组顺序和 EXPLAIN 说明原因,并给出索引重排判断清单。454 收藏 -
Redis 分布式锁续期失败时,不能只看异常或单独读取 TTL。本文用唯一令牌、原子脚本和 PTTL 区分锁仍由本客户端持有、已被接管与状态未知,并说明安全释放和业务栅栏边界。451 收藏 -
Redis Lua 返回数组出现 nil,关键在 Lua table、RESP2/RESP3 与客户端解码的多层映射。本文用最小脚本说明 nil 截断、空回复差异和稳定返回契约的修复方法。448 收藏 -
MySQL JOIN 报 Illegal mix of collations 时,先核对两列的字符集和排序规则,再用查询级 COLLATE 临时恢复,最后统一字段定义并检查索引与匹配语义。446 收藏 -
Redis Stream 使用 XTRIM MAXLEN ~ 时,阈值是近似目标而不是硬上限,宏节点边界和 LIMIT 都可能让裁剪后保留少量额外消息。本文用 XLEN、XRANGE 解释结果,并给出精确裁剪与 MINID 的选择方法。441 收藏 -
讲清 Redis ZRANGEBYSCORE 默认闭区间、括号开区间、无限范围、LIMIT 与 ZRANGE BYSCORE 迁移写法。440 收藏