00:00
好,同学们,我们继续,接下来我们将会给介绍给大家介绍一道非常经典的面试题,Red的缓存过期淘汰策略。这一个问题延伸出来的命令,你生产上的配置啊,以及如何查看等等的方法和策略,那真的时候能考倒一大片人。他通过这道题目来看你到底对red掌握、熟悉和了解的情况。好,话不多讲,植入主题。那么来看看我们的同学。我们的粉丝,硅谷的骨粉给我们反馈的笔面试题,来,兄弟们。生产上你们的这个red的内存设置是多少?比如说现在你的就以你自己的机器,也许是个16G 32g,那你告诉我你配多大,怎么查看如何配置修改的内存大小。如果内存满了。你怎么办?D、清理内存的方式。有哪一些?你知不知道什么叫定期删除和惰性删除?
01:02
缓存淘汰策略能有哪一些?IRU有没有了解过?能否手写一个LRU算法?基本上是从配置到生产的经验,再到考到我们的算法,好,同学们走起。下面我们来看看red内存满了,正因为要满了,是不是它会有淘汰策略?就像我们的线程池的饱和拒绝策略一样,思想几乎都是相近的,那关键就是怎么看,怎么配好,同学们来看看。第一个默认。的内存多少,比如说你的机器是八个G,你本你你自己学习阶段笔记本是八个G,吃多少。我们在哪里查看,如何修改这个设置和配置呢?那么来,同学们。首先我们要查看最大占用内存的话呢,需要看它的配置文件,当然你可以用命令看,也可以用配置文件看,我们一般以配置文件为准,那这个时候请同学们打开你的ready啊。
02:03
我们重来一次。比如说我呢,习惯于有这么一个你这个路径啊,可能是用ETC,可能是用其他,比如说杨哥习惯个人习惯是MY,你自己去看你的,我们整一个默认的配置文件哈。打开,那么同学们。直接定位并找到我们的这一行啊,为了好说,大致以我的这个版本的话,是在859行附近有一个叫max memory。这一行决定了我们red默认的内存配置的设置修改和默认出厂的大小,那这个时候细心的同学呢,可能会发现,诶,他这不住掉了吗?助调代表是没派,没派它代表什么意思啊?重点。如果说没配的话呢,代表我们这儿有一个细节知识。如果不设置最大的内存大小,或者设置最大内存大小为零的话,64位操作系统下面是不限制内存大小的,32位的话最多。
03:07
不超过三个G。我认为目前只要正常的公司的话,应该在开发环境,生产环境肯定是64位操作系统,那么可以得到我们的第一个结论,默认。为了保证自己最大的性能,也是对这个系统呢是多吃多占。如果859行默认是被。注掉的,那么说明什么,你没有派。相当于默认就是你最大的内存。OK,好,这是我们第一个知识点,第二个注意,如果你要配置的话,它是多少。字节,那么所以说我们在这呢,要清楚这么一个东东。我们设置max memory这个参数,它是bit字节类型,那么你在写的过程当中要注意类型的转换和单位的转换好。得到我们这个第一个结论,第二个问题,那么一般你们在生产上配多少,比如说你是个八个G,那么是配一半。
04:03
1/3 1/4 1/5等等等等,那么一般通用啊,这个呢是看各个公司的业务,由于呢,它底层呢,也是借鉴了一些哈希的一些算法啊,虽然说它是用C语言编的,我们就像还记不记得,我们用最简单的话来说,这个是一般业内通用啊,哈希map底层。是不是有一个东西叫负载因,负载因子大概是0.75,所以说red呢,一般它推荐呢,是设置为最大物理内存的3/4,也就是0.75。当然,如果你说我非要设置成一半可不可以也是可以的,实事求是的说啊,你物理内存的3/4,这个red的内存占主机内存已经已经是很大了,注意兄弟们,Red它不是数据库啊,它毕竟不是MYQL,它不能够什么东西都往里面存,我们原来一开始就强调过red干什么啊,只是存我们日常热点高频的查询,查询数据给它弄进去,一般我们都用什么字符串啊,哈希list内常用的五大数据结构,最多加个bit map、位图这样的,所以说你不能把red当存储空间,毕竟它干不过硬盘,OK,所以说一般是3/4左右够用。
05:17
那么接下来就要问问你,你如何设置的内存大小?我们默认出厂的话,是不是就这么一个没有设置吧,那接下来它的设置呢,有两种,一种是通过修改文件配置啊,那么也是我们的配置文件,那不管你是粘还是复制也罢,那么同学们,比如说我们这啊就max memory。假设写个一,那么就是一个字节,那么假设啊,我们现在来派。假设呢,我们就派100兆,那么就是1048。七。对吧,1024乘1024就是1024个。字节是1KB1024个KB是一兆P,这个就是是不是就是一兆那。
06:01
串串。配他们两个这个时候搞定,那么WQ写入保存这一波,OK,那么通过这样的一个配置文件,我们就可以得得到。像这。你呢,大概就像我刚才的配置啊,一保存说明我通过配置文件我没有用默认的了啊,我呢悠着点给我自己配了一个100兆,当然具体你要配多少,你自己去算,这是一个,那第二个怎么个配法呢?就是我对配置文件呢,不熟悉也不能说不熟悉啊,这点东西没有什么不熟悉的,就是说我们能不能够在运行过程当中支持动态的手工修改这个命令呢?答案是可以的。那这个时候由于我们的配置文件,我们都知道red的命令是不是叫conig啊,Config这么一个配置文件,它也支持有个命令叫config,那么配完了以后,同学们请看看IG,当然啊,我如果为了保险起见。我干脆先重启一下我的,那么red server,那么我启动我的。Register。
07:02
好,那么red client我连上了,那么这个时候同学们请注意,对于我们red里面啊,在硬盘上的这个配置文件,我们在red系统里面有个命令叫config,那么现在我们通过config get。Max memory,看看我得到的我物理配置最大内存是多少,大家请看这个时候是不是104857600折合成下来是不是就是刚好是100兆B这一波能跟上,那么如果说啊,那么你要设置呢?那么一样是不是可以set max。Memory可以设置成其他的值,比方说我就设置成一个字节都可以,具体数字是多少你自己设置看,那么这个时候同学们再来看我这是不是设成是一个字节了,OK吧。那么根据我们前面。所讲的设置最大内存大小为零,那么64位下面就可以是吗?无限制的使用几乎是可以等同于全部吃光啊,好,那么这个呢,就是如何修改我们的命令。
08:04
那么第一种是配置文件,第二种是通过我们命令con set和get能够来获得。那么最终。杨哥,我就想看看啊,这个呢是直接可以看到,那么我再想看看我的命令。什么命令可以查看内存使用?情况呢,大家一定要注意这个命令应付。Memory同学们请看在这儿啊,很多专注意啊,这个这个命令其实我们大家都见过,叫in for,它的in是指red目前它的服务器上的各种维度啊,比方说这个是看客,客户端有多少个人连上了。这个是看内存,这个呢是看我们的什么持久化,这个呢是看我们的什么各种状态,那么一直到各种情况,你看我们是不是讲过这个叫主从复制啊replication,那么所以说一样我们讲memory。所以说如何查看red生产上的目前的内存是多少,那么请同学们注意一下。
09:03
Human代表的是人用了多少,那么比方说我现在存了一些K,我自己才用了844.73KB,那么你自己现在有多少呢?那么是叫max memory human,我刚才是不是设了就设了一个字节,这一波OK吧,那么如果说你要把它改了啊,那么同学们请看一下啊,我们再回复到我们刚才的那个东东。一个一个的修改啊,看这个如果是SET1048576,那么memory,那么同学们请看这个时候是不是就变成我们人。人工设置的真真正正能用的是100兆,这一波OK能用的是100兆,你实际而言,你实际使用的human这个是多少兆,这一波OK吧,那么当然啊,有些东西这些其他呢,具体呢,我就不再展开了,因为这个偏运维,我们在面试回答当中不用。什么都懂,而且这些东西可以我随时查文档可以获得,所以说我呢就不再废话,OK,那么所以说请同学们注意,这个就是我们生产上干脆利落的一些命令和配置啊,那么请同学们这点命令呢。
10:11
不难,务必掌握面试过程当中这些题目,一问就知道你的red的使用情况如何。最经典的。默认是多少?怎么查看,怎么修改在配置文件里面的哪个参数max memory,这个时候请同学们务必了解和注意。
我来说两句