Go语言技术文章
-
用 Redis Lua 把库存检查、扣减和已售计数放进一次服务端执行,讲清 KEYS、ARGV、Cluster 同槽位以及原子执行不等于异常回滚的边界。311 收藏 -
MySQL 连接池空闲连接被 wait_timeout 或中间网络设备断开后,不要只靠重试。本文从服务端超时、连接池回收、PingContext 和事务安全四个层面给出恢复方案。311 收藏 -
Redis Cluster 中,普通 Pub/Sub 适合全局广播,shard channels 适合按槽位限制传播范围。本文用命令、槽位和可靠性边界说明两者如何选。311 收藏 -
说明 Redis 8.10 HIMPORT 如何用连接级 fieldset 复用字段名批量写入 Hash,并梳理固定 schema、值顺序、连接池和清理边界。309 收藏 -
Redis Pub/Sub 断线重连不能补发已丢失消息,但可以保存订阅意图,在新连接建立后按快照恢复频道并用订阅回执确认 ready。本文给出 Go 风格实现思路和 Pub/Sub、Streams 的选型边界。309 收藏 -
Redis OBJECT ENCODING 只告诉你 key 当前采用的内部布局。本文用 listpack、hashtable 和 quicklist 说明编码变化的触发条件,并给出结合 MEMORY USAGE 与延迟数据判断真实性能影响的方法。308 收藏 -
MySQL 切换事务隔离级别后查询结果仍不变,通常是当前事务已经建立了快照,或切换只作用于下一事务。本文用两个会话说明 REPEATABLE READ、READ COMMITTED、自动提交和锁定读的边界。307 收藏 -
MySQL InnoDB 中普通 SELECT、UPDATE、FOR SHARE 与 FOR UPDATE 使用的读视图不同。本文通过事务快照、当前版本和锁定动作,给出查询与并发修改的选择方法。306 收藏 -
MySQL 字符串列完整建索引过宽时,可以用前缀索引缩小索引体积,但长度不能凭感觉填写。本文用区分度查询选择候选长度,再结合字符集、字节上限、SHOW INDEX、EXPLAIN 和 ORDER BY 边界完成验证。305 收藏 -
Redis Pipeline 出现单条错误时,不要只看批次级 Exec 返回值。本文用 go-redis 示例说明如何按命令下标定位失败项,区分 WRONGTYPE、redis.Nil 与连接错误,并判断何时需要 TxPipeline。305 收藏 -
Redis SCAN 即使带了 MATCH 和 COUNT,也可能在一次完整迭代中返回重复键。原因是 SCAN 只保存游标,MATCH 负责过滤,COUNT 只是工作量提示;应用侧应使用幂等操作或按需去重,并检查遍历期间的数据变化。305 收藏 -
MySQL 复制延迟排查先区分 IO 接收线程和 SQL 应用线程,再结合读取位点、执行位点、relay log 积压及 Last_IO_Error、Last_SQL_Error 判断问题落点。304 收藏 -
Redis 写入缓存时用 SET 的 EX 或 PX 同步设置值和 TTL,读取并续期时用 GETEX,避免 GET、SET、EXPIRE 拆分造成竞态;本文还区分单命令原子性与多步业务条件。303 收藏 -
MySQL 字符串排序异常,通常不是 ORDER BY 失效,而是列、连接或表达式使用的校对规则不同。本文用 utf8mb4 校对规则、大小写敏感和 COLLATE 覆盖,给出可复现的排查与修正方法。302 收藏 -
Redis HyperLogLog 适合统计大规模 UV:用 PFADD 写入访问标识,PFCOUNT 读取估算值,PFMERGE 合并渠道或分片,并根据 0.81% 左右标准误差判断是否需要精确 Set。302 收藏