文档章节

Redis5.0之后的内存策略--最新八种算法

其乐m
 其乐m
发布于 03/20 21:17
字数 993
阅读 3.5K
收藏 4

前言:这八种算法是基于redis5.0版之后的,他新增了新增allkeys-lfu,volatile-lfu这两种算法,也就是多了LFU算法,而LFU与LRU算法不同在于;LRU是淘汰最近最长时间未使用的页面进行淘汰,而LFU是要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。


1. Redis内存策略

1.1 内存使用情况说明

Redis将数据都保存到内存中,如果一直往内存中存储数据,而不维护.将来可能导致内存数据存不下.内存溢出.

  • 1.主动淘汰
            在redis赋值操作执行时,可以添加超时时间.当时间一到则数据自动删除.

  • 2.采用算法进行淘汰

1.2 Redis中内存优化算法

1.2.1LRU算法

     LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。

以时间T为维度,删除不使用的数据,实现内存的清空。

1.2.2LFU算法

     LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。

1.2.3具体八种算法

  • 1.volatile-lru 设定了超时时间数据,之后采用LRU算法进行删除.

  • 2.allkeys-lru 全部数据,采用LRU算法进行内存数据的优化.

  • 3.volatile-lfu 设定了超时时间的数据,采用LFU算法进行删除

  • 4.allkeys-lfu 所有的数据采用LFU算法实现数据删除.

  • 5.volatile-random 为设定超时时间的数据采用随机算法.

  • 6.allkeys-random 所有数据采用随机算法实现删除.

  • 7.volatile-ttl 将所有设定了超时时间的数据,利用ttl方式进行排序,将还没有超时的数据提前删除.

  • 8.noeviction (默认策略)不采用任何的算法删除数据.如果将来内存溢出则报错返回.

在这里插入图片描述

1.2.4修改redis内存策略

设定redis中的内存优化策略.

597 maxmemory-policy volatile-lru

608 maxmemory-samples 5         lru算法取值个数

问题:如果redis中有100万的数据,都要采用LRU算法进行优化,则计算100万数据的时间性能太低了.

优化:随机筛选5个数据. 在5个数据中执行lru算法.优化1个数据.

一般默认值为5,表示性能最优.筛选的个数可以调整 最大不要超过10.

据官方的统计,如果筛选的个数为10 ,则接近真实的LRU算法.但是会增加内存的开销.

© 著作权归作者所有

其乐m

其乐m

粉丝 7
博文 74
码字总数 81728
作品 1
成都
后端工程师
私信 提问
加载中

评论(0)

云上领跑,快人一步:华为云抢先发布Redis5.0

12月17日,华为云在DCS2.0的基础上,快人一步,抢先推出了新的Redis 5.0产品,这是一个崭新的突破。目前国内在缓存领域的发展普遍停留在Redis4.0阶段,华为云率先发布了Redis5.0,全面展现了...

中间件小哥
2018/12/19
86
0
redis源码分析之内存淘汰策略的原理分析

===================================================== redis源码学习系列文章: redis源码分析之sha1算法分析 redis源码分析之字典源码分析 redis源码分析之内存编码分析intset, ziplist...

chen_song_
2019/10/08
0
0
分布式内存文件系统:Tachyon

Tachyon是一个分布式内存文件系统,可以在集群里以访问内存的速度来访问存储在Tachyon里的文件。Tachyon是架构在最底层的分布式文件系统和上层的各种计算框架之间的一种中间件,其主要职责是...

杨尚川
2015/02/11
1.3K
3
【AlphaGo之后会是什么】一文读懂人工智能打德扑

冷扑大师 Libratus 与“冷门” NIPS 2017 最佳论文 CMU 教授 Tuomas Sandholm 及其学生 Noam Brown 所开发的人工智能德扑系统 Libratus,被国内同行翻译成 “冷扑大师”。冷扑大师在 2017年1...

技术小能手
2017/12/14
0
0
redis源码分析之对象系统源码分析-string, list链表,hash哈希,set集合,zset有序集合

===================================================== redis源码学习系列文章: redis源码分析之sha1算法分析 redis源码分析之字典源码分析 redis源码分析之内存编码分析intset, ziplist...

chen_song_
2019/10/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

郑州哪哪里可以开工程款发票-郑州_新闻网

【电薇同步;1.3.8 - 2.7.4.1 - 5.2.9.7.】张生、诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridge,是Android手机通用...

yyqqvip
5分钟前
5
0
Nginx 反向代理访问

在Nginx 配置 server { listen 80; server_name www.xiaocx.org www.xiaocx.org www.xiaocx.org; root /Users/maison/work/xiaocx/dist; index i......

韩庚庚
9分钟前
9
0
python笔记:环境变量已设置CMD中一直报错"python"不是内部命令,也不是可运行的程序或批处理文件

这些天虽然也写了几个小工具,但是打包都是在anaconda prompt中完成的,因为CMD中一直报错"python"不是内部命令,也不是可运行的程序或批处理文件,各种查度,千篇一律的是环境变量配置的问题...

小玲_001
11分钟前
0
0
AI+BI服务模式

术语与缩写解释 缩写、术语 解 释 BI 商业智能(Business Intelligence,简称:BI),又称商业智慧或商务智能,指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析...

zoegu228
12分钟前
6
0
leetcode1227(面试题 17.09. 第 k 个数)--C语言实现

求: 有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。 示例 1:...

拓拔北海
39分钟前
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部