Go语言技术文章
-
Redis 更新值后 TTL 消失,通常是普通 SET 覆盖值时丢弃了原过期时间。本文用 TTL、PTTL、EXISTS 区分状态,并比较 KEEPTTL、EX/PX 与 volatile 淘汰策略。325 收藏 -
数据库 · MySQL | 2天前 | MySQL · 数据库 · 外键约束 · 数据一致性 · 表结构设计 · mysql 外键 foreign key ON DELETE SET NULL 可空列
解释 MySQL 外键 ON DELETE SET NULL 为什么要求子表外键列允许 NULL,并用父子表示例、建表语句和动作对比说明如何选择 SET NULL、CASCADE 与 RESTRICT。325 收藏 -
用 mysqldump 的一致性读、备份时点 GTID 和副本状态联合确认 InnoDB 在线备份的快照边界,解释为什么 Seconds_Behind_Source 不能单独证明备份一致。323 收藏 -
Redis SCAN 不是并发安全的静态快照:从扫描开始到结束始终存在的键会被完整迭代返回,但扫描期间被删除、新增或重新加入的键可能返回也可能不返回。本文给出重复返回、COUNT、UNLINK 和二次复查的处理方式。323 收藏 -
Redis ZRANGE 遇到相同 score 时不会按写入时间排序,而是继续比较 member。本文用排行榜和分页场景说明字典序规则,并给出可复现的二级排序设计。322 收藏 -
Redis 过期通知收不到时,重点检查 notify-keyspace-events 是否包含 E 或 K 与 x、订阅频道是否匹配,以及 expired 事件的实际触发时机和 Cluster 节点范围。321 收藏 -
Redis pipeline 负责减少批量命令的网络往返,不提供事务隔离和自动回滚。本文对比 pipeline、MULTI/EXEC、WATCH 与 Lua,帮助你按一致性需求选择方案。320 收藏 -
MySQL UPDATE 条件看起来只命中少量数据,却出现大范围锁等待时,按执行计划、data_locks、范围锁和事务边界逐层定位,避免盲目改隔离级别。311 收藏 -
用 Redis Lua 把库存检查、扣减和已售计数放进一次服务端执行,讲清 KEYS、ARGV、Cluster 同槽位以及原子执行不等于异常回滚的边界。311 收藏 -
MySQL 连接池空闲连接被 wait_timeout 或中间网络设备断开后,不要只靠重试。本文从服务端超时、连接池回收、PingContext 和事务安全四个层面给出恢复方案。311 收藏 -
MySQL 切换事务隔离级别后查询结果仍不变,通常是当前事务已经建立了快照,或切换只作用于下一事务。本文用两个会话说明 REPEATABLE READ、READ COMMITTED、自动提交和锁定读的边界。307 收藏 -
MySQL 字符串列完整建索引过宽时,可以用前缀索引缩小索引体积,但长度不能凭感觉填写。本文用区分度查询选择候选长度,再结合字符集、字节上限、SHOW INDEX、EXPLAIN 和 ORDER BY 边界完成验证。305 收藏 -
Redis Pipeline 出现单条错误时,不要只看批次级 Exec 返回值。本文用 go-redis 示例说明如何按命令下标定位失败项,区分 WRONGTYPE、redis.Nil 与连接错误,并判断何时需要 TxPipeline。305 收藏 -
MySQL 复制延迟排查先区分 IO 接收线程和 SQL 应用线程,再结合读取位点、执行位点、relay log 积压及 Last_IO_Error、Last_SQL_Error 判断问题落点。304 收藏 -
Redis Cluster 中 MULTI 不能直接跨槽位执行。本文解释 hash slot、哈希标签和 MOVED 边界,并给出键设计、事务拆分与上线检查清单。300 收藏