Go语言技术文章
-
大key在Redis主从同步中会触发复制断连,表现为从库state由online突变为offline、日志反复出现Connectionwithmasterlost和Resyncingfrommaster,根源是RDB/AOF传输超时或内存溢出。270 收藏 -
数据库 · MySQL | 3星期前 | 性能优化 · InnoDB · MySQL教程 · 数据库运维 · 高并发写入 · mysql innodb 批量写入 Change Buffer innodb_change_buffering
从 MySQL 8.4 InnoDB Change Buffer 默认值变化入手,讲清批量写入、二级索引随机 I/O、merge 观察和上线回滚。270 收藏 -
哨兵故障转移实际耗时为2–30秒,并非毫秒级;“毫秒级”仅指心跳检测与投票过程。真实恢复时间受down-after-milliseconds配置(建议5000–10000ms)、哨兵多数派机制及客户端行为影响,需配合写前校验或代理层使用。268 收藏 -
Redis大Value导致网卡打满的典型现象是业务延迟飙升、连接超时且网卡出向流量持续90%+,而CPU和内存正常;根本原因是GET/HGETALL返回几十MB未压缩value,在客户端与Redis间反复传输;Redis服务端不支持自动压缩,必须由客户端在序列化后、写入前用LZ4(推荐)或GZIP压缩,并在key中标记压缩方式,读取时依标识解压,否则易因误解bytes为str或跳过校验导致乱码或异常。267 收藏 -
数据库 · MySQL | 3星期前 | 性能优化 · 执行计划 · MySQL教程 · 慢查询治理 · 数据库运维 · mysql GROUP BY优化 TempTable 内部临时表 Created_tmp_disk_tables
从 MySQL 8.4 内部临时表和 TempTable 入手,讲清 GROUP BY、ORDER BY、DISTINCT 落盘诊断、SQL 改写、索引策略和参数兜底。267 收藏 -
根本原因是客户端频繁新建并立即关闭TCP连接,导致Linux内核在主动关闭方维持TIME_WAIT状态(2×MSL,通常60秒),端口无法复用;Redis服务端不产生该状态,问题源于客户端未复用连接池、错误调用close()、配置不当或框架内重复初始化。265 收藏 -
serverCron每100ms检查一次,仅当无RDB/AOF子进程时,才根据saveparams(dirty+lastsave)触发RDB,或根据AOF状态、大小及增长率触发AOF重写;改配置不重置计时/计数,故不立即生效。265 收藏 -
Redis单个STRING超10MB必须拆分,建议512KB内切片并用GETRANGE/SETRANGE操作;BigHash应按访问频次和语义拆为小Hash,禁用HGETALL;一致性靠Lua脚本或状态字段+重试保障。263 收藏 -
Redis集群中requirepass无效,因其仅作用于客户端端口(如6379),不约束集群总线端口(如16379);节点间通信明文进行,需依赖网络隔离、ACL及正确配置cluster-announce-ip等措施保障安全。263 收藏 -
本文用订单表归档为例,讲清 MySQL 历史数据如何按时间窗口分批搬迁:先确定归档边界,再批量写入归档表,校验数量和金额,最后小批量清理热表,降低锁等待和慢查询风险。261 收藏 -
Redis7.0的String类型未新增任何操作指令,所有内存优化均源于SDS编码策略的自动演进,如按长度动态选用sdshdr8/sdshdr16及预分配冗余空间,无需用户干预。260 收藏 -
空值缓存过期时间设太长会导致Redis内存耗尽。因空值key不被访问,LRU无法淘汰,且每个约占100–200字节,数量多时迅速撑满内存;安全TTL应为1–5秒,需匹配业务数据可见延迟,并配合布隆过滤器、前缀命名、LFU策略及监控告警综合防控。260 收藏 -
MySQL 多租户订单表变慢时,先用 tenant_id 领头的联合索引稳住常见查询;当热点租户持续拉高 rows、慢日志和队列等待,再考虑租户路由、冷热分流或独立分片。259 收藏 -
缓存雪崩主因是大量key过期时间高度趋同,需通过扫描TTL、监控expired_keys曲线及检查写入逻辑验证;应采用SETEX或SET...EX原子命令,在基础过期时间上叠加5%–20%随机偏移,并确保所有写入路径(含定时任务、MQ、后台)均覆盖随机化。258 收藏 -
开启lazyfree-lazy-evictionyes且Redis≥6.0后,淘汰策略触发的内存释放由后台线程异步执行,主线程不再被同步释放大Key卡住。258 收藏