Go语言技术文章
-
数据库 · Redis | 3星期前 | Redis · 消息队列 · Stream · 重试 · redis streams XPENDING XAUTOCLAIM PEL pending JUSTID
Redis Streams 里,XAUTOCLAIM 只负责把空闲消息转交给新消费者,不能替代 XACK,也不会自动清空 PEL。本文用 redis-cli 拆开 JUSTID、XPENDING、XACK 与 XDEL 的边界,给出重试后验收消息是否真正收口的检查路径。501 收藏 -
MySQL 分区表并不是加上 PARTITION BY 就能保留所有唯一约束;分区表达式中的列必须进入每一个唯一键,本文用订单表拆开主键、业务唯一键和建表取舍。501 收藏 -
Redis 选 RDB 还是 AOF,关键不是哪种方式绝对更好,而是业务能接受丢失几秒或几分钟数据。本文按丢失窗口、fsync、恢复速度和备份要求给出 RDB、AOF 与组合策略的选择方法。501 收藏 -
MySQL JSON_TABLE 展开数组时,数组对象缺少某个字段不会自动丢掉整行。为可选字段使用 NULL ON EMPTY,并配合 EXISTS PATH 判断字段是否存在,就能保留行并区分缺失、JSON null 与空字符串。501 收藏 -
Redis AOF 重写时,内存风险主要看 fork 之后的 COW 增长,磁盘风险则要拆成剩余空间、写入吞吐和 fsync 排队。本文用 INFO、MEMORY STATS、df 与 iostat 建立一套可复用的判断清单。501 收藏 -
Redis Stream 的 XTRIM 只限制流中条目,不会自动解决消费组 PEL 积压。本文用 XLEN、XINFO GROUPS、XPENDING 区分问题,并给出 MAXLEN、ACKED、DELREF 的选择方法。501 收藏 -
Redis 线上重启时,RDB 与 AOF 会走不同的恢复路径。本文用一个可复现的 Go 检查程序拆开两种持久化方式的边界,说明如何按数据恢复目标选择配置。500 收藏 -
Redis List 队列要把待办任务可靠地交给消费者,推荐用 LMOVE 原子地从 pending 移入 processing,再用 LREM 确认完成;Redis 6.2+ 还可用 BLMOVE 等待任务。499 收藏 -
Redis 内存碎片率升高不一定代表数据变多。本文从 INFO memory 基线、SCAN 分批扫描、MEMORY USAGE 抽样和大键定位入手,区分数据增长、删除后的 RSS 滞留与分配器复用。499 收藏 -
数据库 · MySQL | 3天前 | MySQL · InnoDB · MySQL锁等待 performance_schema.data_lock_waits data_locks锁对象 InnoDB事务阻塞 锁等待链定位
从 data_lock_waits 和 data_locks 还原等待事务、阻塞事务及锁对象,再映射到 InnoDB 会话和最后 SQL,形成一套可复核的 MySQL 锁等待链定位方法。497 收藏 -
数据库 · MySQL | 4星期前 | MySQL · 数据库 · 权限管理 · 故障排查 · 账号安全 · 账号锁定 MySQL 8.4 FAILED_LOGIN_ATTEMPTS PASSWORD_LOCK_TIME ACCOUNT UNLOCK
MySQL 8.4 账号因为连续输错密码被临时锁定时,不能只看一条 Access denied。本文用 SHOW CREATE USER、Locked_connects 和失败登录记录区分锁定原因,并给出安全解锁、策略修正与复查步骤。494 收藏 -
Redis LMPOP 可以从多个候选列表中找到第一个非空键,并按 LEFT 或 RIGHT 一次弹出指定数量。本文用订单队列示例拆清 COUNT、空队列返回和集群多键边界。494 收藏 -
Redis 8.6 为 Streams 的 XADD 增加 IDMP 与 IDMPAUTO,帮助生产端在网络断开或进程重试时避免同一消息重复入流。本文拆开 pid、iid、Stream entry ID 与消费者组的边界,给出可验证的命令写法。494 收藏 -
Redis Stream 消费组里的 Pending 消息不是普通队列积压。本文用 XPENDING 判断空闲时间,再用 XAUTOCLAIM 认领超时消息,最后用 XACK 收口,并说明认领后的重复消费与幂等边界。494 收藏 -
Redis Lua 脚本不要只返回 OK 或空值。本文用固定的状态码与 payload 契约区分业务成功、状态冲突、条件未满足和命令执行错误,并给出 pcall 与 Go 客户端解析的迁移清单。493 收藏