为何须要缓存淘汰?你须要缓存30G的数据,可是Redis自己只能使用10G的内存,那你就得作个取舍了,毕竟鱼与熊掌不可兼得。为了利益最大化确定要保留最重要的10个G。redis
Redis自己提供了6中缓存淘汰策略,如下属性表示容许使用的最大内存算法
1 |
server.maxmemory |
当使用的内存超过限制内存时,Redis会根据配置的如下6中淘汰策略选择数据淘汰数据库
1 2 3 4 |
#指定数据淘汰算法 maxmemory-policy allkeys-lru #LRU和最小TTL算法的样本个数 maxmemory-samples 5 |
大量的请求瞬时涌入系统,而这个数据在Redis中不存在,从而全部的请求都落到了数据库上从而把数据库打死。形成这种状况的缘由以下:缓存
解决方案:并发
缓存击穿,就是常说的热点key问题,当一个正有很是巨大的访问量访问的key 在失效的瞬间,大量的请求击穿了缓存,直接落到了数据库上,而后全部从数据获取到数据的线程又都并发的想要把数据缓存到redis中。dom
解决方案:分布式
因为Redis是基于内存的应用,能够很容易作到高性能、高并发从而起到保护数据库的做用。若是缓存意外挂了、全部的请求落到了数据上就造成了缓存雪崩。高并发
解决方案:性能
当一个数据须要更新时由于不可能作到同时更新数据库和缓存、那么此时读取数据的时候就必定会发生数据不一致问题,而数据不一致问题在金融交易领域的系统中是确定不容许的。spa
解决方案: