快捷搜索: 王者荣耀 脱发

redis丢key和bigkey的问题

丢key (缓存污染

    现象:现场老是出现redis-key丢失的情况,昨天的key今天就没了 排查角度: 1、key是否设置过期时间 2、检查key的删除逻辑 3、查看redis中已使用的内存是否接近maxmemory,导致触发了内存淘汰策略 如果是第三种情况,则根据业务场景需要设置一下config 修改redis-config 修改maxmemory 修改maxmemory-policy 由 allkeys-lru改为 volatile-lru 查看哪些key占用了比较多的内存(bigkeys排查),并查看是否有设置超时时间

bigkeys

bigkeys:hash/set/zset中元素数量很多,string存储的数据很大

    危害: 1、阻塞、redis是单线程的,对bigkeys的操作会导致阻塞其他命令,导致大批量redis操作超时报错等一系列问题 2、过期/删除时会阻塞,如果是redis4.0以后的版本,可以用异步删除解决(lazy-free/unlink) 3、内存分布不均匀,比如在redis-cluster中会造成节点内存的使用不均匀,增大某单个实例的处理压力 排查bigkeys的方法 : 1、redis-cli --bigkeys 2、使用开源工具,redis-rdb-tools来分析redis的key分布情况
rdb --command json dump.rdb
    解决方法: 优化存储方案 bigkey拆分,分片存储 存到数据库 设置过期时间等
经验分享 程序员 微信小程序 职场和发展