Go语言技术文章
-
Redis Hash适合字段级读取和局部更新,JSON字符串适合整对象缓存;如果必须按JSONPath原子修改文档,再评估RedisJSON。本文用Go示例梳理三种方式的边界、过期策略和并发取舍。476 收藏 -
RedisTimeSeries 的 TS.MRANGE 可以在一次查询中用 AGGREGATION min,avg,max 返回同一时间桶的多个统计值。本文说明返回元组的字段顺序、应用侧映射方式,以及它与 GROUPBY/REDUCE 跨序列归并不能叠加的边界。476 收藏 -
Redis SORT_RO 是 SORT 的只读变体,适合在只读副本上完成列表、集合或有序集合排序。本文用商品候选列表拆开 LIMIT、GET、ALPHA 的结果边界,解释为什么 SORT 会被导向主节点,以及如何验证查询结果和复杂度风险。475 收藏 -
EXPLAIN 里的 rows 只是优化器估算要扫描的索引记录数,不等于最终访问数据页的成本。本文用订单列表查询拆开回表、覆盖索引和分页取数的关系,并给出可复现的验收方法。475 收藏 -
一个订单列表翻到很后面后明显变慢,问题通常不只在 LIMIT,而在于数据库仍要跳过大量记录并回表。本文用游标式分页、稳定排序和覆盖索引改造一个列表接口,并用 EXPLAIN 核对执行路径。475 收藏 -
旧表启用 MySQL CHECK 约束前,先用反向查询找出历史违规数据,按业务规则分批修复或隔离,再以 NOT ENFORCED 暂存命名约束,确认全表通过后切换为 ENFORCED。475 收藏 -
Redis CLIENT PAUSE 会在指定毫秒内暂停客户端命令。本文用最小演练解释 WRITE、ALL、TIMEOUT 与 CLIENT UNPAUSE 的差异,并给出主从切换前后的检查顺序。474 收藏 -
Redis 向量检索不是把 KNN 数字改大就能得到稳定结果。使用 FT.SEARCH 时,应先明确过滤条件、DIALECT 2 和 HYBRID_POLICY 的关系,再根据候选规模选择 ADHOC_BF 或 BATCHES,并检查距离排序是否符合业务语义。474 收藏 -
Redis BITFIELD 默认使用 WRAP;本文对比 WRAP、SAT、FAIL 的溢出语义,并从位宽、offset、作用范围和返回 nil 四个方向排查策略不生效。473 收藏 -
Redis Lua 脚本中的 key 必须通过 EVAL 的显式 key 参数传入,业务值放入 ARGV。本文用最小示例说明 numkeys 如何划分 KEYS 与 ARGV,并演示多 key 脚本的同槽检查。473 收藏 -
MySQL WITH RECURSIVE 查询层级数据时,真正需要防的是环路和无界展开。本文用组织架构示例拆开终止条件、递归深度上限、路径去重和结果核对。472 收藏 -
账号表用了软删除后,旧用户数据需要保留,新用户却可能再次使用同一邮箱。本文从真实注册冲突现场出发,说明复合唯一索引为何失效,以及如何用生成列把活跃账号约束、删除留档和恢复校验收进一条稳定的数据链路。471 收藏 -
订单导入或重试后出现重复记录时,不要直接 DELETE。本文用 MySQL 8.0 的 ROW_NUMBER() 按业务键分组、按时间保留最新行,先用 SELECT 检查待删数据,再用临时表和主键完成可回滚的清理。471 收藏 -
对比 Redis BITFIELD 的 WRAP、SAT、FAIL 溢出策略,说明位宽边界、策略作用域、返回值处理和循环计数、封顶计量、严格配额等选型场景。471 收藏 -
用一条带库存条件的 UPDATE 实现最小扣库存接口,避免先查后改造成超卖;同时说明受影响行、事务边界与死锁重试。470 收藏