为什么需要缓存淘汰?你需要缓存30G的数据,但是Redis本身只能使用10G的内存,那你就得做个取舍了,毕竟鱼与熊掌不可兼得。为了利益最大化肯定要保留最重要的10个G。
Redis本身提供了6中缓存淘汰策略,以下属性表示允许使用的最大内存
server.maxmemory
当使用的内存超过限制内存时,Redis会根据配置的以下6中淘汰策略选择数据淘汰
其他相关配置:
#指定数据淘汰算法
maxmemory-policy allkeys-lru
#LRU和最小TTL算法的样本个数
maxmemory-samples 5
大量的请求瞬时涌入系统,而这个数据在Redis中不存在,从而所有的请求都落到了数据库上从而把数据库打死。造成这种情况的原因如下:
解决方案:
缓存击穿,就是常说的热点key问题,当一个正有非常巨大的访问量访问的key 在失效的瞬间,大量的请求击穿了缓存,直接落到了数据库上,然后所有从数据获取到数据的线程又都并发的想要把数据缓存到redis中。
解决方案:
由于Redis是基于内存的应用,可以很容易做到高性能、高并发从而起到保护数据库的作用。如果缓存意外挂了、所有的请求落到了数据上就形成了缓存雪崩。
解决方案:
当一个数据需要更新时因为不可能做到同时更新数据库和缓存、那么此时读取数据的时候就一定会发生数据不一致问题,而数据不一致问题在金融交易领域的系统中是肯定不允许的。
解决方案:
参考自公众号:石杉的架构笔记