Go语言技术文章
-
Redis ZINCRBY 使用双精度浮点分值,直接累加小数可能出现展示误差。本文用两位小数积分榜演示整数缩放、历史数据修复和上线验收。490 收藏 -
MySQL 按业务时区统计日期时,不能先对 UTC 时间取 DATE 再转换。本文用 CONVERT_TZ 处理跨午夜记录,并说明半开区间、命名时区表和 NULL 排查方法。168 收藏 -
MySQL JOIN 报 Illegal mix of collations 时,先核对两列的字符集和排序规则,再用查询级 COLLATE 临时恢复,最后统一字段定义并检查索引与匹配语义。446 收藏 -
讲清 Redis ZRANGEBYSCORE 默认闭区间、括号开区间、无限范围、LIMIT 与 ZRANGE BYSCORE 迁移写法。440 收藏 -
MySQL 递归 CTE 的列类型只由非递归锚点推断。生成日期序列时显式 CAST 为 DATE,并把格式化文本移到 CTE 外部,可避免截断和严格模式报错。104 收藏 -
用 Redis HSCAN 的 cursor 循环渐进读取大型 Hash,解释 COUNT、MATCH、NOVALUES 的边界,以及数据变化时如何用幂等处理降低重复和漏读风险。237 收藏 -
MySQL 递归 CTE 遍历树数据时,应在路径中记录已访问节点,用 FIND_IN_SET 排除重复引用,再用深度、递归层数和执行时间限制兜底,避免脏数据造成无限循环。142 收藏 -
Redis EXPIRE 再次续期会直接替换旧 TTL。本文用会话滑动过期场景解释默认语义,并比较 NX、XX、GT、LT 的使用边界与排查方法。273 收藏 -
MySQL invisible index 可以在不删除索引的情况下观察优化器计划变化。本文用 IS_VISIBLE、EXPLAIN、ALTER INDEX 和 SET_VAR 说明如何安全评估索引下线影响。300 收藏 -
Redis TTL 返回 -1 表示键存在但没有过期时间,-2 表示键不存在。本文用命令和 Go 分支示例区分三种状态,并排查普通 SET 覆盖、过期窗口和查询上下文不一致等常见原因。216 收藏 -
MySQL 生成列索引不生效,通常不是索引语法错,而是查询表达式没有与生成列定义完全匹配。本文按表达式、结果类型、JSON_UNQUOTE 和 EXPLAIN 四个方向排查。300 收藏 -
用 Redis SET NX EX 原子创建带过期时间的分布式锁,配合唯一 token 和 Lua 原子释放,避免锁永久残留或误删其他实例的新锁。186 收藏 -
MySQL 用 SUM OVER 计算累计值时,如果希望每个月重新开始,关键不是给 SUM 加条件,而是把包含年份的月份键放进 PARTITION BY,并用稳定的时间与主键排序。本文给出可直接改写的 SQL 和排查清单。380 收藏 -
Redis Stream 使用 XTRIM MAXLEN ~ 时,阈值是近似目标而不是硬上限,宏节点边界和 LIMIT 都可能让裁剪后保留少量额外消息。本文用 XLEN、XRANGE 解释结果,并给出精确裁剪与 MINID 的选择方法。441 收藏 -
MySQL 用 ROW_NUMBER 取每组最新记录时,如果时间相同,必须补充唯一且符合业务的排序键;若要保留全部并列最新行,应改用 RANK。本文用订单状态示例说明两种写法和检查清单。242 收藏