-
FUNCTIONLOAD将函数库作为数据库对象持久化并复制,SCRIPTLOAD仅内存缓存脚本且不落盘、不复制;前者支持高可用与跨节点复用,后者重启或主从切换后即失效。281 收藏 -
Redis集群启动失败、节点无法握手、CLUSTERNODES显示fail或connecting,大概率是Bus端口(clientport+10000)被占用;需确保各节点clientport与其对应bus端口区间互不重叠,如7000→17000,则下一节点clientport至少为17001。275 收藏 -
数据库 · MySQL | 1天前 | 性能优化 · InnoDB · MySQL教程 · 数据库运维 · 高并发写入 · mysql innodb 批量写入 Change Buffer innodb_change_buffering
从 MySQL 8.4 InnoDB Change Buffer 默认值变化入手,讲清批量写入、二级索引随机 I/O、merge 观察和上线回滚。270 收藏 -
数据库 · MySQL | 1天前 | 性能优化 · 执行计划 · MySQL教程 · 慢查询治理 · 数据库运维 · mysql GROUP BY优化 TempTable 内部临时表 Created_tmp_disk_tables
从 MySQL 8.4 内部临时表和 TempTable 入手,讲清 GROUP BY、ORDER BY、DISTINCT 落盘诊断、SQL 改写、索引策略和参数兜底。267 收藏 -
空值缓存过期时间设太长会导致Redis内存耗尽。因空值key不被访问,LRU无法淘汰,且每个约占100–200字节,数量多时迅速撑满内存;安全TTL应为1–5秒,需匹配业务数据可见延迟,并配合布隆过滤器、前缀命名、LFU策略及监控告警综合防控。260 收藏 -
数据库 · MySQL | 4天前 | 性能优化 · 高并发 · InnoDB · MySQL教程 · 数据库运维 · mysql innodb AUTO_INCREMENT 高并发写入 innodb_autoinc_lock_mode
从 MySQL 8.4 AUTO_INCREMENT 锁模式入手,讲清高并发 INSERT、批量导入、复制格式和上线回滚检查。254 收藏 -
Redis7.0的io-threads仅加速socketread/write/RESP解析,不执行命令;盲目开启或多设线程数反致延迟上升、吞吐下降,需先确认瓶颈确在IO层而非主线程或内存带宽。251 收藏 -
Redis6.0+才正式支持volatile-lfu和allkeys-lfu,低版本会静默降级为LRU;需通过CONFIGGET/SET确认并热生效策略,商品Key须按粒度命名(如prod:sku:10086)并用INCR+EXPIRE维护热度,OBJECTFREQ返回0–255近似值仅适用于相对排序,不反映真实访问次数。245 收藏 -
Lettuce管道中flushCommands()仅发送命令不返回结果,正确做法是先保留各操作返回的RedisFuture,再调用get()或thenApply()获取响应。245 收藏 -
命中率低于75%(即keyspace_hits:keyspace_misses<3:1)时应调整淘汰策略,因缓存已无法有效分担数据库压力;需结合evicted_keys增速与keyspace_misses增速同步上升来确认问题根源。242 收藏 -
可行但仅适用于轻量场景;必须用EVAL执行Lua脚本原子完成“取+删”或“取+标记”,避免LPOP+DEL竞态导致重复消费或消息丢失。241 收藏 -
String类型在LRU驱逐场景下内存效率低,因其每个key和value均独立占用redisObject+SDS结构,导致对象头冗余高、驱逐粒度粗;而Hash等结构共享key对象头、支持ziplist压缩,内存利用率高40%~60%。233 收藏 -
应立即将maxmemory-policy从allkeys-lru切回volatile-lru,但需先停写、确认内存未满,再执行CONFIGSET与REWRITE,并配合RDB恢复关键数据,否则残留无TTLkey将持续引发淘汰。232 收藏 -
Redis的String类型加剧内存碎片是因为频繁SET/GET/APPEND导致jemalloc中大小不一的内存块反复分配释放,旧块无法复用而残留为碎片,表现为mem_fragmentation_ratio>1.5且used_memory_rss远大于used_memory。230 收藏 -
缓存空值、布隆过滤器和业务层校验是防御缓存穿透的三层策略:空值需设短过期并避免null值;布隆过滤器须预估容量、全局单例且配合写库更新;业务层应优先校验参数合法性。229 收藏