Go语言技术文章
-
Redis UNLINK 只会先把 key 从键空间摘除,真正的对象释放在后台异步完成。本文用 lazyfree 队列、used_memory、RSS 和 MEMORY STATS 建立删除大键后的内存回收判断方法。454 收藏 -
Redis BZPOPMIN 在集合为空时阻塞等待,有成员时弹出最低分项。本文说明超时秒数、多 key 的来源选择顺序,并用独立示例区分队列内最小值与全局最小值,提醒弹出后的任务恢复责任。454 收藏 -
MySQL 事件已经创建却没有按时执行,通常要分开核对全局调度器、事件自身状态、创建时区和 DEFINER 权限。本文用一个可复查的小项目演示排查顺序,并补上重复触发与错误日志边界。452 收藏 -
MySQL CHECK 写入非法值没报错,通常与 NOT ENFORCED、INSERT IGNORE 或 NULL 导致的 UNKNOWN 有关。本文用建表定义、警告和信息架构查询逐层排查。452 收藏 -
MySQL 遇到 OR 条件时可能选择 Index Merge,但这不代表它一定优于联合索引。本文用订单筛选场景拆开合并扫描、回表、排序与改写边界,给出 EXPLAIN 和 EXPLAIN ANALYZE 的核对方法。451 收藏 -
Redis 分布式锁续期失败时,不能只看异常或单独读取 TTL。本文用唯一令牌、原子脚本和 PTTL 区分锁仍由本客户端持有、已被接管与状态未知,并说明安全释放和业务栅栏边界。451 收藏 -
从 ACL CAT 识别实例分类,以最小权限创建业务用户,并用 +@all -@dangerous、键模式和频道模式限制 Redis 危险命令与数据范围。451 收藏 -
MySQL 8.0.13 及以上可以用函数索引直接索引 DATE(created_at) 的结果,但索引定义必须使用双层括号,查询表达式也要保持一致。本文从创建、命中判断和生成列替代三个方面说明日期表达式查询的落地写法。451 收藏 -
Redis 持久化选择要先看可接受的数据丢失窗口,再比较 RDB 快照、AOF 增量日志和 RDB+AOF 组合。本文给出场景边界、fsync 配置和上线前检查清单。451 收藏 -
Redis SETNX 只能完成抢锁,不能单独保证安全释放。本文用订单超时任务拆解误删他人锁的竞态,给出带随机令牌的加锁、续期边界与 Lua 原子释放脚本,并用可复查的命令验收。450 收藏 -
Redis 7.4 的 HEXPIRE 可以只给 Hash 中指定字段设置过期时间,适合拆分会话或临时属性的生命周期。本文用 HSET、HEXPIRE、HPTTL 和 HGETALL 核对 FIELDS 参数、返回值、版本边界与常见误区。450 收藏 -
MySQL 直接重命名列会让仍使用旧字段名的 SQL 立即失效。本文区分 RENAME COLUMN 与 CHANGE,说明索引和外键的自动跟随范围,以及视图、存储程序、生成列和分区表达式的人工复核边界,并给出新增列、回填、双写和切换的兼容迁移方案。450 收藏 -
Redis Lua 脚本接收 ARGV 时,tonumber 可能因为空字符串、非数字或参数位置错误返回 nil,后续计算就会报错或走错分支。本文用一个库存扣减脚本拆开参数校验、默认值边界和线上验收方法。449 收藏 -
本文用 Redis Vector Sets 组织向量、元素标识和轻量属性,说明如何用 VADD、VSIM、FILTER、COUNT 与 FILTER-EF 设计可解释的相似度查询结果。449 收藏 -
Redis Streams 的积压不能只看 XLEN。本文用 XPENDING、XINFO GROUPS 和 XINFO CONSUMERS 区分 pending 与 lag,并给出从现象到根因的排查命令。449 收藏