怎么把淘宝店放到自己做的网站去,常州网站设计平台,建设银行属于哪里,wordpress主题栏是什么意思一 什么是缓存1. 生活上的例子比如有一个行李箱和一个手机#xff0c;每次把手机放到行李箱在拿出来肯定很麻烦#xff0c;如果放到裤兜里就会方便很多#xff0c;所以裤兜算作行李箱的一个缓存#xff0c;不仅仅是裤兜#xff0c;甚至可以一直拿在手上等其他有存储介质的…一 什么是缓存1. 生活上的例子比如有一个行李箱和一个手机每次把手机放到行李箱在拿出来肯定很麻烦如果放到裤兜里就会方便很多所以裤兜算作行李箱的一个缓存不仅仅是裤兜甚至可以一直拿在手上等其他有存储介质的东西。说白了缓存就是用来提高效率的比如 内存 作为 CPU 和 外设 的缓存和接下来要讲的 Redis 作为 MySQL 的缓存MySQL 和磁盘打交道磁盘是外设 I/O 效率慢并且是随机寻址就更慢了而 Redis 工作在内存用来缓存 MySQL 的部分数据来分摊压力再合适不过了。二 缓存如何更新1. 定期更新顾名思义每隔一段时间来对缓存进行更新比如每个一段时间统计访问频率最多的 100 个单词写入到日志里到了时间在同步到 Redis 进行缓存更新。定期更新带来的问题隔的这段时间可能某些冷门词突然就变高频了但是定期更新所以无法及时更新到缓存里导致绕过 Redis 压力就导到 MySQL 中了为了解决这个问题引入实时更新。2. 实时更新顾名思义只要查不到缓存就去 MySQL 中查查到了在放到缓存里。Redis 是跑在内存中的内存大小有限且不止有 Redis 这一个服务在使用所以一直更新就会导致 Redis 占用内存直到内存用尽所以引入了缓存淘汰策略。3. 淘汰策略1. FIFO(先进先出)
先进缓存的先淘汰。
2. LRU(最久未访问的)
最久未访问的先淘汰。
3. LFU(最少访问次数)
最少访问次数的先淘汰。
4. Random(随机淘汰)
随机淘汰。
5. Redis 支持的淘汰选项
Volation-LRU在设置了过期的 Key 中淘汰最久未访问的。AllKeys-LRU在所有的 Key 中淘汰最久未访问的。Volation-LFU在设置了过期的 Key 中淘汰最少访问次数的。AllKeys-LFU在所有的 Key 中淘汰最少访问次数的。AllKeys-Random在设置了过期的 Key 中随机淘汰。Volation-Randon在所有的 Key 中随机淘汰。Volation-TTL在设置了过期的 Key 中淘汰越早过期的。Noeviction(默认策略)没有任何淘汰机制写超了直接报错(不适用与实时更新)。
三 缓存使用事项1. 缓存预热
缓存更新采用实时更新的时候原因Redis 服务刚启动什么也没有压力全部到 MySQL 中并把查到的数据缓存到 Redis一开始 MySQL 就会承担大量的并发请求导致压力过大。解决办法最开始的时候把 定期更新 和 实时更新 相结合先把预先的高频日志导到 Redis后续在采用实时更新避免了一开始大量并发到 MySQL。定期更新没有缓存预热的情况。
2. 缓存穿透
当查询某些 KeyRedis MySQL 中都不存在MySQL 压力也会增大。原因 MySQL 删除误删了数据。 Key 本身不合法。解决办法对不合法的 Key 检测。采用布隆过滤器提前检测 Key 是否存在。
3. 缓存雪崩
某一时间端大量的 Key 失效导致 MySQL 压力过大。原因如果同一时间内设置了过期的 Key 并且过期时间相同。Redis 服务挂了。解决办法过期时间添加其他因子避免过期时间相同。引入集群哨兵自动管理挂掉的 Redis 服务器。
4. 缓存击穿
某一时间端热点 Key 失效导致 MySQL 压力过大和缓存雪崩类似。原因和缓存雪崩类似。解决办法热点 Key 尽量不要设置过期时间。引入分布式锁访问 MySQL 次数上限则锁住避免 MySQL 压力过大。