缓存
缓存
这里介绍的是程序中的缓存。
举例1
我们在手机上用腾讯视频看电影、电视剧的时候,可以先将视频缓存下来,有时间再看,缓存下来的视频,看的时候不会卡,在线看,网络不好的话,就会卡。
这里提到缓存视频。其实就是将视频文件先下载到自己的手机上,下次看的时候,直接用的自己手机的视频文件播放,而不用去腾讯服务器拉取文件再播放。
将服务器文件先缓存到手机,看的时候可以直接看,这就是缓存。
举例2
我们在浏览一个网页的时候,发现网页上某个图片是旧图片,把浏览器的缓存清一下,再看这个图片,图片就是新图片了。
这是因为浏览器把图片保存在了自己的电脑上,你浏览的时候,直接展示的自己电脑上的图片,而不是去网页服务器获取的。这也是缓存。
举例3
CPU操作的数据在内存上,所以需要和内存打交道。但由于内存的数据读取速度太慢(相比CPU而言),大大的浪费了CPU。有一个部件速度特别快,但是不好制作。于是将内存的部分数据放在这个部件上,让CPU从这个部件上读取数据,这样就提升了CPU的利用率。这个部件也就称为了CPU缓存。
这里的CPU缓存也是缓存,这里的缓存存储了内存的部分数据供CPU使用,在缓存中找不到的数据才去内存中找。
举例4
公司开发了一套应用程序,应用程序都是从数据库读取的数据,随着用户量的增多,服务器压力的增大,用户感觉应用程序变慢了,你的老大让你给加个缓存。让你用 Memcached 或 Redis 来当缓存。
由于数据库的访问速度远没有内存的访问速度快,所以,将数据库中经常访问的数据放在内存中,可以提升访问速度,减少数据库压力。
总结
可以看到,缓存可以在很多地方存在,都是为了提升某方面的速度,解决某方面慢的问题。
作为一名开发人员,我们需要了解如何实现缓存,我们一般碰到的情况也就是 例4。
缓存的使用方法
读取数据/文件的时候,先从缓存中获取,如果缓存中存在,直接获取。如果缓存中不存在,再去数据/文件的原始位置(服务器/数据库)获取。
缓存什么数据
针对应用程序中增加的缓存,由于缓存的容量(内存)是有限的,所以缓存一般放的都是 不经常变动 经常访问 的数据
缓存回收
程序需要缓存的数据那么多,所以要根据情况回收一批,为其他数据提供空间。
那怎么个回收法呢?
按空间
设置缓存数据大小10M,缓存的数据超过10M,就扔掉一部分数据。
按时间
按存活时间:数据只能缓存4分钟或5分钟或几天,过了时间,就回收。
按空闲时间:数据一直没被访问过,都超过好几天了,那就回收吧,腾地。
按数据量
设置数据最多100条,超了100条,就回收一部分。
*昵称:
*邮箱:
个人站点:
*想说的话: