Go语言技术文章
-
Redis Lua 返回数组出现 nil,关键在 Lua table、RESP2/RESP3 与客户端解码的多层映射。本文用最小脚本说明 nil 截断、空回复差异和稳定返回契约的修复方法。448 收藏 -
MySQL INSERT IGNORE 不会让所有输入行都成功写入。本文用 ROW_COUNT、Records、Duplicates、Warnings 和 SHOW WARNINGS 区分新增行、重复键跳过与数据转换警告,并给出批量导入日志字段设计。448 收藏 -
RedisJSON 的 JSON.SET 可以用 NX 和 XX 控制条件写入。本文从路径是否命中出发,说明根文档创建、已有父对象补字段、已存在字段更新,以及缺失中间路径时的返回值。447 收藏 -
用 Redis bitmap 按用户和月份记录每日签到,演示 SETBIT、GETBIT、BITCOUNT 的组合,并说明日期偏移、BIT 范围、过期和补签边界。446 收藏 -
MySQL JOIN 报 Illegal mix of collations 时,先核对两列的字符集和排序规则,再用查询级 COLLATE 临时恢复,最后统一字段定义并检查索引与匹配语义。446 收藏 -
用 MySQL JSON_SCHEMA_VALID 配合 CHECK 约束,在 JSON 入库前拒绝缺字段、类型不符和数值越界,并用验证报告定位具体失败位置。446 收藏 -
用 MySQL JSON_TABLE 展开订单 JSON 数组时,通过 DEFAULT ON EMPTY 为缺失字段提供类型正确的默认值,并结合 EXISTS PATH、FOR ORDINALITY 和 ON ERROR 保留可追溯的映射边界。445 收藏 -
梳理 Redis Streams 使用 XGROUP CREATE 创建消费者组时 0-0、$ 和 MKSTREAM 的选择,说明历史回放、实时接入、幂等初始化与结果确认的边界。445 收藏 -
Redis BLMOVE 可以在等待任务时,把列表元素原子转入 processing 列表。本文用两个列表拆开方向参数、超时返回、完成确认和超时回收,帮助你搭出可恢复的可靠队列。445 收藏 -
用 Redis BITFIELD 把多个小整数放进一个字符串,掌握 # 偏移、GET/INCRBY 顺序以及 WRAP、SAT、FAIL 三种溢出策略,避免紧凑计数器读错或越界。444 收藏 -
MySQL 逻辑备份的并发写入窗口应区分 InnoDB DML、相关 DDL 和非事务表。本文说明单事务快照的适用条件、MySQL 8.4 工具兼容性,以及独立产物、失败保留和业务交接安排。444 收藏 -
Redis Functions 不是把一段脚本临时塞进缓存,而是先加载成数据库里的函数库,再由客户端通过 FCALL 调用。本文用一个库存扣减函数说明 FUNCTION LOAD、显式传入键名、FUNCTION LIST 和重启后的恢复验收边界。443 收藏 -
Redis 8.4 新增 DELEX,可以在服务端按值或摘要条件删除字符串键,避免客户端先 GET、再比较、再 DEL 的并发窗口。本文用旧流程对照 IFEQ、IFNE、IFDEQ、IFDNE 四种条件,拆开返回值、版本兼容、摘要计算和上线验收边界。443 收藏 -
MySQL GROUP_CONCAT 结果突然变短时,先检查 group_concat_max_len,再按字节估算选择 SESSION、GLOBAL 或单条语句设置,并同时留意 max_allowed_packet、排序、分隔符和 NULL 行为。443 收藏 -
A VG()忽略NULL是标准行为,但会导致业务语义错位、报表失真、基数不可知、全NULL组返回NULL及COALESCE与A VG嵌套语义混淆等问题。A VG() 忽略 NULL 不是 bug,是标准行为;但业务上常把它当“没影响”,结果算出的平均值根本不是你想要的那个“平均”。 A VG() 的442 收藏