Redis的缓存策略主要有以下几种:一、定期删除定期删除是指Redis会周期性地主动检查各个键,看它们是否已经过期。如果过期,则将其删除。这样可以保证过期键能被及时清理,释放内存空间。例如,Redis会每隔一段时间(可配置)遍历所有设置了过期时间的键,检查其是否过期,若过期就执行删除操作。这是一种较为主动的清理过期键的方式,但由于是定期执行,可能存在某些过期键还未到下次检查时间就一直占用内存的情况。二、惰性删除惰性删除是当客户端访问一个键时,Redis首先会检查该键是否过期。如果过期,则立即删除该键,并返回空值给客户端。这种策略的优点是只有在真正访问到过期键时才进行删除操作,不会主动占用CPU资源去定期检查所有键。但缺点是如果一个过期键长时间没有被访问,它会一直占用内存空间,直到被访问时才被删除。三、内存淘汰策略当Redis的内存使用达到上限时,就需要采用内存淘汰策略来删除一些键以腾出空间。常见的内存淘汰策略如下:1. noeviction(默认):当内存不足以容纳新写入数据时,新写入操作会报错。这是最保守的策略,不会删除任何已有的键。2. allkeys-lru:从所有键中选择最近最少使用的键进行删除。该策略会优先淘汰那些最久未被访问的键,适用于希望缓存中保留热点数据的场景。3. volatile-lru:只从设置了过期时间的键中选择最近最少使用的键进行删除。这样可以保证过期键能及时被清理,同时优先淘汰不常使用的过期键。4. allkeys-random:从所有键中随机选择键进行删除。这种方式比较简单直接,但可能会导致一些热点键被误删除。5. volatile-random:只从设置了过期时间的键中随机选择键进行删除。6. volatile-ttl:从设置了过期时间的键中,选择即将过期的键进行删除。即将过期的键指的是距离过期时间最近的键,这样可以优先清理那些马上就会过期的键,避免它们占用过多内存。