这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
redis是一种高性能、非关系型的内存数据库,因为其性能强大而且简单易用才受到大家的欢迎。但是,在实际应用中,Redis也会遇到一些性能问题,例如大key、热key、慢查询场景、缓存穿透和缓存雪崩等问题。在本篇笔记中,我们将记录如何对这些性能问题进行优化。 1.大key 大key是指存储在Redis中的单个键值对占用的内存较大,通常是由于存储了大量的数据或者复杂的数据结构而导致的。大key会严重影响Redis的性能,因为Redis是单线程的,如果一个大key需要较长的时间来处理,那么它就会阻塞其他命令的执行。 解决大key问题的方法将大key拆分成多个小的键值对,这样可以避免一个大key的处理时间过长。 2.热key 热key是指被频繁访问的键值对。解决方法主要是为热key再加一层缓存。同样可以通过拆分使得key分布到其他节点,这样平摊的负载。 3.慢查询场景 慢查询场景是指在Redis中执行的查询操作需要较长时间才能完成。这可能是由于查询的键值对数量过多,或者查询操作需要执行一些复杂的计算操作所导致的。 主要还需需要避免这些情况 4.缓存穿透 缓存穿透是指在Redis中执行的查询操作无法命中缓存,导致每次查询都需要访问数据库,从而降低了Redis的性能。解决方法可以是缓存空键。 5. 缓存雪崩 缓存雪崩是指在一个时间段内,缓存中大量的key同时失效,导致大量的请求直接落在数据库上,从而引起数据库性能问题甚至宕机。解决方法是设置过期时间时加上随机值。这样每个key的过期时间就会有所区别,减少了缓存同时失效的概率。还有一个办法就是多层缓存。