专业提供建站模板的公司,网站开发算前端吗,wordpress 同步微博,高明网站设计多少钱一、数据的过期策略
1.什么是过期策略 Redis对数据设置数据的有效时间#xff0c;数据过期以后#xff0c;就需要将数据从内存中删除掉。可以按照不同的规则进行删除#xff0c;这种删除规则就被称之为数据的删除策略#xff08;数据过期策略#xff09;。
2.过期策略-惰…一、数据的过期策略
1.什么是过期策略 Redis对数据设置数据的有效时间数据过期以后就需要将数据从内存中删除掉。可以按照不同的规则进行删除这种删除规则就被称之为数据的删除策略数据过期策略。
2.过期策略-惰性删除 惰性删除设置该key过期时间后我们不去管它当需要该key时我们在检查其是否过期如果过期我们就删掉它反之返回该key。 优点对CPU友好只会在使用该key时才会进行过期检查对于很多用不到的key不用浪费时间进行过期检查。 缺点对内存不友好如果一个key已经过期但是一直没有使用那么该key就会一直存在内存中内存永远不会释放。
3.过期策略-定期删除 定期删除每隔一段时间我们就对一些key进行检查删除里面过期的key(从一定数量的数据库中取出一定数量的随机key进行检查并删除其中的过期key)。 定期清理有两种模式 SLOW模式是定时任务执行频率默认为10hz每次不超过25ms以通过修改配置文件redis.conf 的hz选项来调整这个次数。 FAST模式执行频率不固定但两次间隔不低于2ms每次耗时不超过1ms。 优点可以通过限制删除操作执行的时长和频率来减少删除操作对 CPU 的影响。另外定期删除也能有效释放过期键占用的内存。 缺点难以确定删除操作执行的时长和频率。
4.总结 Redis的过期删除策略惰性删除 定期删除两种策略进行配合使用。
二、数据的淘汰策略
1.什么是淘汰策略 数据的淘汰策略当Redis中的内存不够用时此时在向Redis中添加新的key那么Redis就会按照某一种规则将内存中的数据删除掉这种数据的删除规则被称之为内存的淘汰策略。
2.淘汰策略有哪些 Redis支持8种不同策略来选择要删除的key noeviction 不淘汰任何key但是内存满时不允许写入新数据默认就是这种策略。 volatile-ttl 对设置了TTL的key比较key的剩余TTL值TTL越小越先被淘汰。 allkeys-random对全体key 随机进行淘汰。 volatile-random对设置了TTL的key 随机进行淘汰。 allkeys-lru 对全体key基于LRU算法进行淘汰。 volatile-lru 对设置了TTL的key基于LRU算法进行淘汰。 allkeys-lfu 对全体key基于LFU算法进行淘汰。 volatile-lfu 对设置了TTL的key基于LFU算法进行淘汰。
3.使用建议 1. LRULeast Recently Used最近最少使用。用当前时间减去最后一次访问时间这个值越大则淘汰优先级越高。key1是在2s之前访问的, key2是在8s之前访问的删除的就是key2。 2. LFULeast Frequently Used最少频率使用。会统计每个key的访问频率值越小淘汰优先级越高。key1最近5s访问了2次, key2最近5s访问了8次 删除的就是key1。 3. 优先使用 allkeys-lru 策略。充分利用 LRU 算法的优势把最近最常访问的数据留在缓存中。如果业务有明显的冷热数据区分建议使用。 4. 如果业务中数据访问频率差别不大没有明显冷热数据区分建议使用 allkeys-random随机选择淘汰。 5. 如果业务中有置顶的需求可以使用 volatile-lru 策略同时置顶数据不设置过期时间这些数据就一直不被删除会淘汰其他设置过期时间的数据。 6. 如果业务中有短时高频访问的数据可以使用 allkeys-lfu 或 volatile-lfu 策略。
三、面试应该怎么说
1.过期策略
面试官Redis的数据过期策略有哪些 ?
候选人在redis中提供了两种数据过期删除策略
第一种是惰性删除在设置该key过期时间后我们不去管它当需要该key时我们在检查其是否过期如果过期我们就删掉它反之返回该key。
第二种是 定期删除就是说每隔一段时间我们就对一些key进行检查删除里面过期的key
定期清理的两种模式 SLOW模式是定时任务执行频率默认为10hz每次不超过25ms以通过修改配置文件redis.conf 的 hz 选项来调整这个次数 FAST模式执行频率不固定每次事件循环会尝试执行但两次间隔不低于2ms每次耗时不超过1ms
Redis的过期删除策略惰性删除 定期删除两种策略进行配合使用。
2.淘汰策略
面试官Redis的数据淘汰策略有哪些 ?
候选人这个在redis中提供了很多种默认是noeviction不删除任何数据内部不足直接报错是可以在redis的配置文件中进行设置的里面有两个非常重要的概念一个是LRU另外一个是LFULRU的意思就是最少最近使用用当前时间减去最后一次访问时间这个值越大则淘汰优先级越高LFU的意思是最少频率使用会统计每个key的访问频率值越小淘汰优先级越高我们在项目设置的allkeys-lru挑选最近最少使用的数据淘汰把一些经常访问的key留在redis中。
面试官数据库有1000万数据 ,Redis只能缓存20w数据, 如何保证Redis中的数据都是热点数据 ?
候选人可以使用 allkeys-lru 挑选最近最少使用的数据淘汰淘汰策略那留下来的都是经常访问的热点数据。
面试官Redis的内存用完了会发生什么
候选人这个要看redis的数据淘汰策略是什么如果是默认的配置redis内存用完以后则直接报错。我们当时设置的 allkeys-lru 策略。把最近最常访问的数据留在缓存中。