Go语言技术文章
-
Redis 8.4 新增 MSETEX,可在一次操作中写入多个字符串键并共享过期策略。本文从旧式 MSET 加 EXPIRE 的等待链出发,核对 NX、XX、EX、PX、EXAT、PXAT 和 KEEPTTL 的边界,给出升级前后的验收方法。314 收藏 -
从只读视图部分调用者失败的现象入手,按创建时、引用时和函数执行时拆解权限检查,比较 SQL SECURITY DEFINER 与 INVOKER 的差异,并给出查看定义、选择上下文和防复发的处理顺序。314 收藏 -
Redis EXPIRE 的 GT 只接受比当前 TTL 更长的新过期时间,LT 只接受更短的时间;结合 TTL 返回值,可以安全实现缓存续期和过期收紧。313 收藏 -
通过 InnoDB 范围 UPDATE 与并发 INSERT 的双事务场景,解释记录锁、间隙锁和 next-key 锁何时出现,并给出索引、隔离级别、锁等待观察与缩小锁范围的实用判断方法。313 收藏 -
Redis Lua 脚本中,KEYS 只放 Redis key 名称,ARGV 放阈值、状态和新值等普通参数,numkeys 负责划分两者边界。本文用 EVAL、redis-cli 和 Go 客户端示例说明正确传参方式,并补充集群场景的 key 约束。313 收藏 -
MySQL GTID 自动定位可以减少复制切换时对文件偏移量的人工计算,但前提是先确认 GTID 模式、复制线程和已执行事务集。本文给出从停写、选择候选副本、重指向下游到旧源回接的清单。313 收藏 -
用 performance_schema.data_lock_waits 连接等待锁与持有锁,再回到 data_locks 和线程事件核对对象、事务和处理顺序,避免只看到一个线程就误判。312 收藏 -
使用 MySQL ROW_NUMBER() 按业务键分组、按更新时间倒序取每组最新记录,并处理并列时间、NULL 和索引等常见边界。312 收藏 -
MySQL UPDATE 条件看起来只命中少量数据,却出现大范围锁等待时,按执行计划、data_locks、范围锁和事务边界逐层定位,避免盲目改隔离级别。311 收藏 -
用 Redis Lua 把库存检查、扣减和已售计数放进一次服务端执行,讲清 KEYS、ARGV、Cluster 同槽位以及原子执行不等于异常回滚的边界。311 收藏 -
MySQL 连接池空闲连接被 wait_timeout 或中间网络设备断开后,不要只靠重试。本文从服务端超时、连接池回收、PingContext 和事务安全四个层面给出恢复方案。311 收藏 -
Redis Cluster 中,普通 Pub/Sub 适合全局广播,shard channels 适合按槽位限制传播范围。本文用命令、槽位和可靠性边界说明两者如何选。311 收藏 -
MySQL 的窗口函数执行信息不会完整出现在传统 EXPLAIN 表格中。本文从 query_block.windowing.windows[] 入手,说明如何读取函数、排序、临时表和窗口分组字段。311 收藏 -
MySQL 分区表建好后查询仍然很慢,往往不是分区失效,而是条件没有触发分区裁剪。本文用按月订单表拆解 EXPLAIN PARTITIONS、范围条件和分区键改写的验证方法。310 收藏 -
说明 Redis 8.10 HIMPORT 如何用连接级 fieldset 复用字段名批量写入 Hash,并梳理固定 schema、值顺序、连接池和清理边界。309 收藏