redis缓存问题

缓存更新策略

1.lru/lfu/fifo - redis自带,根据maxmemory-policy设置,数据无法保证一致性

2.超时剔除 - 设置expire,存在一定时间不一致问题

3.主动更新 - 建议与超时剔除一起使用,一致性最好

低一致性使用最大内存,超时剔除策略一起使用

高一致性使用超时剔除和主动更新策略一起使用(避免主动更新出问题后缓存瘫痪)

缓存粒度

缓存粒度应适中,避免不必要内存,网络浪费(只缓存重要字段)

缓存穿透

1.缓存空对象(数据变化频繁场景)(缓存空间占用较多)

2.布隆过滤器(数据变化小场景)

无底洞优化

更多的节点意味着更多的网络消耗,批量操作更耗时,当节点增加到一定程度,再增加节点并无法提高性能

优化:

1.命令优化

2.减少网络次数

3.降低连接成本(长连接,连接池,nio)

缓存雪崩

1.保证缓存高可用(sentinel、cluster)

热点key问题 - p361

2.高并发下缓存失效后多个线程同时申请建立缓存

解决:

1.互斥锁,同时只能有一个线程申请建立缓存(setnx锁),其它线程等待重新读。(保证缓存构建时间较短) 

2.永远不过期(定期构建缓存)(重构期间数据不一致)

你可能感兴趣的:(redis缓存问题)