Go语言技术文章
-
RedisStream比PUB/SUB更适合做持久化队列,因其支持消息持久化、消费者组、ACK机制、唯一消息ID和按位置回溯;PUB/SUB纯内存广播,无存储、无堆积能力。384 收藏 -
数据库 · MySQL | 3星期前 | 性能优化 · InnoDB · 生产实践 · MySQL教程 · 数据库运维 · mysql redo log innodb 性能优化 innodb_redo_log_capacity
从 MySQL 8.4 的 innodb_redo_log_capacity 入手,讲清 redo log 容量、检查点压力、写入抖动和崩溃恢复时间之间的取舍,并给出上线检查清单。382 收藏 -
Redis集群不支持跨槽位Lua脚本原子执行,所有key必须位于同一slot,可通过哈希标签(如{1001})强制路由、客户端ASKING模式及KEYS参数传入确保合规。381 收藏 -
RedisPub/Sub不能替代RabbitMQ,因其不保证消息可达、无持久化订阅、无消费确认机制,消息丢失理直气壮;它纯内存广播,断连、重启后消息全丢,无积压、无offset、无重试,仅适用于允许丢失的实时轻量场景。381 收藏 -
Redis卡顿但命令不慢,主因是系统级资源竞争:CPU中断、NUMA错配、swap抖动、TCP队列溢出、透明大页fork阻塞、磁盘IO毛刺等,需逐项排查验证。381 收藏 -
从手机号后四位和日期函数查询变慢切入,讲清 MySQL 8.x 函数索引、生成列、表达式匹配、EXPLAIN 验证、DDL 风险和上线检查。381 收藏 -
本文用订单列表查询场景,演示普通二级索引为什么需要回表,以及如何通过覆盖索引减少回表,并用 EXPLAIN 的 Extra 验证优化结果。381 收藏 -
哨兵判定主节点“客观下线”失败的常见现象是客户端连接断开、写请求超时,但sentinelinfo显示master-status:ok或sentinels数量不足,本质是哨兵未达成quorum票数共识;原因包括quorum设置过大、哨兵间26379端口不通、monitor配置不一致等。380 收藏 -
单纯靠频率限制无法防住缓存穿透,因其无法识别语义非法请求(如user_id=-1),且分布式攻击下单IP低频可绕过;限流仅作为兜底,需与布隆过滤器、空值缓存等联动,并结合多维特征精准识别恶意请求。380 收藏 -
生产环境必须组合使用RDB和AOF:RDB作冷备快照,AOF负责实时写入;仅用AOF有崩溃导致启动失败、重放慢、数据丢失风险;仅用RDB则丢失窗口大、fork开销高、无法增量修复。379 收藏 -
根本原因是sentineldown-after-milliseconds阈值过短,而主库执行耗时Lua脚本导致PING响应超时,哨兵误判为主观下线;典型表现为INFOreplication正常但日志频繁出现+sdown又快速恢复。378 收藏 -
RedisLua脚本无法实现SCAN分页,因脚本无状态且无法维护游标;唯一可行方案是客户端驱动SCAN分页,Lua仅负责单次结果的模式匹配与截取。378 收藏 -
Redis集群节点宕机是否自动恢复,取决于它是不是主节点、有没有足够多的主节点在线投票,以及从节点是否满足参选资格;不是所有宕机都会触发转移,更不是宕机后立刻切换。377 收藏 -
会,大量key同时过期会引发CPU尖峰、内存延迟释放和请求抖动;Redis通过每100ms随机抽样检查过期key,超25%过期则连续多轮高强度扫描删除,导致延迟飙升甚至超时。375 收藏 -
Redis主从心跳由应用层PING和REPLCONFACK命令维持,主库每秒发PING,从库需立即回ACK;若超repl-timeout(默认60秒)未收到ACK,主库即标记该从库为down。373 收藏