Go语言技术文章
-
Redis 事务里的 QUEUED、EXECABORT、EXEC 返回数组和 WATCH 空回复分别代表什么?本文把命令入队、执行报错、事务取消与列表/Streams 工作队列拆开说明,帮助你准确定位错误边界。431 收藏 -
Redis 8.0.0 及以上可用 HGETEX 在读取 Hash 字段的同时更新过期时间。本文说明 EX、PX、EXAT、PXAT、PERSIST 和 FIELDS 的组合方式,并用 HTTL 区分字段仍在、无 TTL 与已经过期。357 收藏 -
Redis volatile 只淘汰带 TTL 的键,allkeys 把所有键纳入候选。本文从数据可重建性、TTL 约定和内存压力出发,给出策略选择表、配置示例及业务观测要点。464 收藏 -
Redis 的 EXPIRE 默认会覆盖当前 TTL。只想首次设置过期时间时使用 NX;只处理已经有 TTL 的键使用 XX;只允许缩短或延长时分别使用 LT、GT。若同时覆盖字符串值,还要用 SET 的 KEEPTTL 保留原有 TTL。217 收藏 -
Redis WATCH 事务竞争失败时,正确做法不是盲目重发,而是重新读取最新值后有限重试。本文用 Go go-redis/v9 拆解竞争窗口、TxFailedErr、退避和错误边界。143 收藏 -
Redis Stream 可以挂载多个独立 consumer group。本文用 XGROUP CREATE、XGROUP SETID、XREADGROUP、XINFO 和 XPENDING 说明如何让不同消费组分别从历史位置回放事件,并避开 PEL 混淆。442 收藏 -
MAXLEN 可在写入或独立裁剪时限制 Redis Stream 保留条目数。本文对比精确与近似模式,给出命令示例,并说明 LIMIT、消费组引用及容量规划的适用边界。376 收藏 -
Redis Streams 消费组中的消息如果长时间没有确认,会留在 PEL 里。本文用 XAUTOCLAIM 按最小空闲时间接管消息,讲清游标、COUNT、JUSTID、XACK 和重复投递边界。252 收藏 -
Redis Stream 消费者失联后,使用 XPENDING 找出 PEL 中的超时消息,再用 XCLAIM 转交给新消费者,并根据返回值和业务结果决定何时 XACK。261 收藏 -
Redis Streams 中,XPENDING 可以先看消费者组的待确认总量,再用明细和 IDLE 毫秒过滤找出长期未确认消息。本文拆解 PEL、消费者、空闲时间和投递次数,并说明定位与恢复的边界。159 收藏 -
XACK 只清理指定消费组的待处理记录,不删除流正文。本文给出 Redis Streams 消费与确认示例,说明返回零、重复确认、失败重试及超时认领的处理边界。347 收藏 -
Redis Stream 要让多个 worker 分摊未消费消息,应让它们加入同一个 consumer group,并使用不同的 consumer 名称通过 XREADGROUP 读取;处理成功后用 XACK 清理 PEL,恢复时再读取自己的 pending 历史。158 收藏 -
GeoJSON 只是查询输入格式,真正参与空间索引的是带 SRID 约束的 GEOMETRY 列。本文用 MySQL 8.4 说明如何转换 GeoJSON、创建 SPATIAL INDEX,并用 MBR 候选条件配合精确空间关系完成查询。334 收藏 -
MySQL JSON 列只改一个路径时,使用 JSON_SET、JSON_REPLACE 或 JSON_REMOVE 让更新尽量保留原地部分更新条件,并用 JSON_STORAGE_FREE 和 PARTIAL_JSON 识别存储与复制日志边界。231 收藏 -
MySQL 的窗口函数执行信息不会完整出现在传统 EXPLAIN 表格中。本文从 query_block.windowing.windows[] 入手,说明如何读取函数、排序、临时表和窗口分组字段。311 收藏