Go语言技术文章
-
布隆过滤器不支持单元素删除,BF.EXISTS返回true时数据可能已不存在,导致缓存穿透;应改用支持CF.DEL的CuckooFilter或定期重建带时间戳的过滤器。342 收藏 -
RedisCluster非开箱即用高可用方案,需主动设计拓扑、预估槽位、处理跨槽限制;常见连不上因客户端未启集群模式、总线端口未开放、配置用localhost、多key未同槽、全局命令不支持、脚本事务受槽约束、slot缓存更新滞后等。342 收藏 -
Redis哨兵模式不支持自动伸缩,其核心能力仅限于监控存活、触发故障转移和提供主节点地址;它不参与节点增删、数据分片或路由更新。339 收藏 -
哨兵选主按slave-priority、复制偏移量、RunID三步筛选:优先过滤priority为0的节点;再比对offset,越大越优;最后按RunID字典序升序取首个。339 收藏 -
本文用订单列表深分页场景,演示为什么 LIMIT 大偏移会变慢,并通过覆盖索引、延迟关联和游标式分页减少无效扫描。339 收藏 -
ZREVRANGE默认返回member(如商品ID),非score;需加WITHSCORES参数才同时返回member和score,结果为交替格式。337 收藏 -
setIfAbsent不够安全,因其无法原子性设置过期时间,易导致锁永久不释放;Redis推荐用SETkeyvalueNXEXseconds一步完成,但SpringDataRedis老版本setIfAbsent不支持EX参数。337 收藏 -
本文用后台订单列表总数统计场景,演示为什么大表每次 COUNT 会拖慢接口,并按精确总数、条件筛选、缓存和汇总表给出优化方案。336 收藏 -
主节点配置requirepass后从节点同步失败,因从节点未配置masterauth导致认证失败;需在从节点配置文件中设置masterauth或运行时CONFIGSET,并配合ACL权限、bind限制与防火墙加固。334 收藏 -
异步刷新缓存的核心逻辑是命中逻辑过期数据时先返回旧值,再后台异步查库更新缓存,通过expireAt字段判断过期而非Redis物理TTL,并用分布式锁保障并发安全。333 收藏 -
全量复制触发时,Redis主节点必须生成RDB文件,因为从节点初次连接或断连太久后无法仅靠增量命令追上主节点,主节点需将当前完整数据集打包成RDB文件传给从节点以保证状态一致。329 收藏 -
列表页分页常常要查总数,但 COUNT(*) 一慢,整个页面都会被拖住。本文按完整工作流拆解:先确认筛选条件和扫描行数,再选择联合索引、缓存总数或汇总表,最后给出上线检查清单。329 收藏 -
<p>缓存雪崩主因是大量Key集中过期,解决需打散过期时间并避免全量失效;分片本身不防雪崩,但结合一致性哈希与分片ID固定偏移(如offset=shard_id*60)可强制错峰过期,比随机更可控。</p>328 收藏 -
必须同时启用io-threads和io-threads-do-reads,否则I/O线程不参与读请求处理;io-threads≥2才生效,需configrewrite或重启;推荐值为min(4,CPU核心数×0.7),NUMA架构下必须用server_cpulist绑定同node核心。326 收藏 -
数据库 · MySQL | 4星期前 | InnoDB · 故障排查 · 生产实践 · MySQL教程 · 事务隔离 · mysql innodb Purge Lag History List 长事务 Undo
从 MySQL 8.4 InnoDB purge lag 入手,讲清 history list length、长事务、undo 暴涨和 purge 参数的生产排障方法。326 收藏