Redis单机并发量能达到 万级
,MySQL的并发量一般是 千级
,它们支持的并发量可能相差十倍,所以要尽量把流量拦截在缓存层。
Redis中的某个key在某个时间过期,导致缓存的作用失效,所有的外界请求直接打在MySQL上。
缓存击穿的后果是 增大MySQL数据库的负载:
应用层(数据库代理层)往往采用的是“线程池+连接池”的处理模式,当缓存中的某个key失效,多个线程、多个连接在同一时刻都无法在缓存中查找到这一key值,就会转而去MySQL中查找。
缓存击穿的解决方法是 加锁:当线程发现在缓存中查找不到某个key时,上锁并从MySQL中更新key值到缓存中,其他线程由于无法获得锁而阻塞等待。
TeamTalk中是如何实现的:
Redis中的key永不过期,应用层更新数据时同时更新Redis和MySQL中数据(如 group_member群成员);
造成缓存穿透的可能原因:
缓存穿透的解决方法:
什么是布隆过滤器:
https://mp.weixin.qq.com/s/jMiMtCJ0ItGFKe4pNw-9gw
//cloud_desk: tmp_note_0922
https://blog.csdn.net/weixin_37356262/article/details/88827688
redis.conf 配置文件中两个重要的参数:
设置配置文件 redis.conf 中的 maxmemory
参数,可以控制其最大可用内存大小(字节)。
当Redis实际所需内存超过了 maxmemory,那么就需要根据 maxmemory-policy 中设置的策略进行处理了。
当内存占满以后,redis提供了一套“缓存淘汰机制”:
Memory Management(内存溢出控制策略)。
Redis支持以下6种策略:
LRU算法:
Least Recently Used,最近最少使用算法。
Redis中并不会准确的删除所有键中最近最少使用的键,而是随机抽取5个键,删除这5个键中最近最少使用的键。
https://www.cnblogs.com/gaopengpy/p/12189697.html
什么时候应该使用RDB?什么时候应该使用AOF?
https://blog.csdn.net/weixin_44172800/article/details/106661896
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/ArtAndLife/article/details/120407266
内容来源于网络,如有侵权,请联系作者删除!