网站开发多久完成,网站开发的方案,兰州网站seo收费,北京王府井书店网上商城前言 相关系列
《Redis 目录》#xff08;持续更新#xff09;《Redis 淘汰策略 源码》#xff08;学习过程/多有漏误/仅作参考/不再更新#xff09;《Redis 淘汰策略 总结》#xff08;学习总结/最新最准/持续更新#xff09;《Redis 目录》持续更新《Redis 淘汰策略 源码》学习过程/多有漏误/仅作参考/不再更新《Redis 淘汰策略 总结》学习总结/最新最准/持续更新《Redis 淘汰策略 问题》学习解答/持续更新
在内存耗尽的情况访问Redis会发生什么 如果是读指令会正常返回而如果是写指令则会根据实际的淘汰策略抛出异常或删除符合条件的部分数据以空出内存空间。
Redis的淘汰策略有哪些 Redis淘汰策略用于在内部不足时选定部分数据删除以空出内存空间。
eviction 逐出 no-eviction当内存不足以/不允许写入新数据时写操作会报错默认但不推荐lru Least Recently Used 最近最少使用 allkeys-lru当内存不足以/不允许写入新数据时删除最近最少使用的数据常用 volatile-lru当内存不足以/不允许写入新数据时删除最近最少使用的期限数据无期限数据时会报错常用lfu Least Frequently Used 最少使用 allkeys-lfu当内存不足以/不允许写入新数据时删除最少使用的数据 volatile-lfu当内存不足以/不允许写入新数据时删除最少使用的期限数据无期限数据时会报错random 随机 allkeys-random当内存不足以/不允许写入新数据时删除随机数据 volatile-random当内存不足以/不允许写入新数据时删除随机期限数据无期限数据时会报错ttl Time To Live 存活时间 volatile-ttl当内存不足以/不允许写入新数据时删除最快过期的期限数据无期限数据时会报错常用。
Redis的LRU/LFU淘汰策略是精确实现吗 Redis对LRU/LFU类型的淘汰策略采用的是近似实现因此统计/对比所有目标数据的最近/完全使用次数/频率是非常耗费性能的行为…近似实现的主要思想具体如下
最近/长期使用频率的模拟Redis并不会对数据的最近/长期使用频率进行精确计算而是会使用最近访问时间/概率访问总数来进行模拟。Redis会为数据的每次访问记录时间而LRU淘汰策略便会使用最近访问时间来作为最近使用频率来进行比较。最近访问时间最早的数据会被认为最近使用频率最小因此该内部数据便会被最终淘汰。此外Redis还会“概率”增长中数据的访问总数从而便可以在不破坏整体增长趋势的情况下通过避免增长来提升整体性能并在LFU淘汰策略中充当长期使用频率来进行比较。Redis还考虑了时间衰减因素对长期使用频率的影响因为数据的时间跨度并不相同 并且某些数据可能只在早期被频繁使用而在这之后就被长期闲置。很显然这种数据即使长期使用频率较高也更适合被删除因此为了令最近使用总数可以占据更高的频率比重Redis在“概率”增长访问总数的同时还会根据当前时间与最近访问时间的差值大小来对应的减少访问总数。局部比较代替全量比较为了最大程度的提升性能/降低开销Redis不会去比较全量数据的最近/长期使用频率而只会随机抽取{maxmemory-samples}配置项数量的数据来进行局部比较并将最近/长期使用频率最小的数据淘汰。