Go语言技术文章
-
不能。Redis6–7.0的ACL不支持Key前缀通配符(如~tenant:a:),仅支持字面Key名或~;7.0起虽有实验性前缀匹配,但生产未验证且不支持嵌套通配。452 收藏 -
Redis集群不支持Pub/Sub跨节点广播,因设计上无全局频道路由机制,PUBLISH消息仅被本地订阅者接收;应改用单节点Redis+连接池,或升级至Kafka/Pulsar等专业消息中间件。451 收藏 -
volatile-lru适合电商购物车场景,但需为每个购物车key显式设置TTL并定期刷新;它仅淘汰带过期时间的key,采样随机且保守,不适用于依赖访问频次的场景。450 收藏 -
Redis List 用 BRPOP 做任务队列时,Worker 取走任务后宕机会让任务直接消失。更稳的做法是先用 LMOVE 转到处理中队列,业务成功后再 LREM 确认。449 收藏 -
预热不充分指预热数据未覆盖真实热点、未执行完或未及时更新,导致上线后2–5分钟内缓存击穿;须用线上采样等动态数据源、分批超时控制、命中率校验及事件驱动机制。445 收藏 -
RedisPub/Sub不支持优先级,仅为瞬时广播;真正优先级队列需用List+BRPOP多键轮询,按queue:high→queue:medium→queue:low顺序原子消费,Pub/Sub仅作轻量通知触发器。441 收藏 -
volatile-ttl策略仅在内存达限且有写入时触发,随机采样已设TTL的key并淘汰其中剩余过期时间最短者,并非主动或精准清理“马上过期”的key。441 收藏 -
Redis 过期键通知适合做自动清理的提醒信号,但不能当成可靠消息队列。更稳的做法是订阅事件触发清理任务,同时保留补偿扫描、幂等门禁、失败重试和告警复盘。441 收藏 -
RedisTemplate操作Hash返回null的主因是序列化器不一致:key、hashKey、value三者序列化方式必须匹配,尤其hashKey须用StringRedisSerializer,value推荐Jackson序列化,否则反序列化失败或读不到数据。439 收藏 -
intset是Redis对全整数小集合的内存优化编码,将整数紧凑存储于连续内存,无指针和字符串头开销,比hashtable节省3–5倍内存;前提为元素均为合法64位有符号整数且数量不超set-max-intset-entries(默认512)。439 收藏 -
数据库 · MySQL | 1个月前 | 高并发 · 故障排查 · MySQL教程 · 事务隔离 · InnoDB锁 · mysql innodb 高并发 锁等待 MySQL 8.4 NOWAIT SKIP LOCKED
围绕高并发工单抢占和库存预占,讲清 MySQL 8.x InnoDB locking read 中 NOWAIT、SKIP LOCKED 的适用边界、复现方法、SQL 改写、锁等待诊断和上线检查。439 收藏 -
直接看INFOclients的qbuf、qbuf-free、obl、oll、omem字段可判断单个客户端流量压力:qbuf高说明命令积压,omem>2MB或qbuf>1MB且持续高位表明高频写入或返回大数据;CLIENTLIST才能定位具体异常客户端,需重点关注qbuf与omem同时偏高、idle小但qbuf大的连接。438 收藏 -
RedisLua脚本原生不支持复杂正则匹配,仅提供基础模式匹配(如%d+),不支持\d、(?i)、.*?、分组捕获等;禁止动态加载外部库(如lrexlib-pcre);推荐在客户端处理或使用RediSearch的FT.SEARCHREGEX。438 收藏 -
从循环 GET 多个 Redis key 导致接口变慢的现场开始,排查网络往返累积问题,再用 Pipeline、分批窗口和结果顺序对齐优化批量读写。436 收藏 -
Redis发布订阅怕大Key是因为PUBLISH不校验消息大小,大Payload会阻塞单线程主线程,导致延迟飙升、内存积压;应用层需在序列化后截断或拒绝超限消息(如>100KB),订阅端须预检长度并禁用自动解码,大Payload场景应改用SET+key事件、DB查询或Kafka等替代方案。433 收藏