缓存

时间 2019/7/4 10:44:08 加载中...

缓存

这里介绍的是程序中的缓存。

举例1

我们在手机上用腾讯视频看电影、电视剧的时候,可以先将视频缓存下来,有时间再看,缓存下来的视频,看的时候不会卡,在线看,网络不好的话,就会卡。

这里提到缓存视频。其实就是将视频文件先下载到自己的手机上,下次看的时候,直接用的自己手机的视频文件播放,而不用去腾讯服务器拉取文件再播放。

将服务器文件先缓存到手机,看的时候可以直接看,这就是缓存。

举例2

我们在浏览一个网页的时候,发现网页上某个图片是旧图片,把浏览器的缓存清一下,再看这个图片,图片就是新图片了。

这是因为浏览器把图片保存在了自己的电脑上,你浏览的时候,直接展示的自己电脑上的图片,而不是去网页服务器获取的。这也是缓存。

举例3

CPU操作的数据在内存上,所以需要和内存打交道。但由于内存的数据读取速度太慢(相比CPU而言),大大的浪费了CPU。有一个部件速度特别快,但是不好制作。于是将内存的部分数据放在这个部件上,让CPU从这个部件上读取数据,这样就提升了CPU的利用率。这个部件也就称为了CPU缓存。

这里的CPU缓存也是缓存,这里的缓存存储了内存的部分数据供CPU使用,在缓存中找不到的数据才去内存中找。

举例4

公司开发了一套应用程序,应用程序都是从数据库读取的数据,随着用户量的增多,服务器压力的增大,用户感觉应用程序变慢了,你的老大让你给加个缓存。让你用 Memcached 或 Redis 来当缓存。

由于数据库的访问速度远没有内存的访问速度快,所以,将数据库中经常访问的数据放在内存中,可以提升访问速度,减少数据库压力。

总结

可以看到,缓存可以在很多地方存在,都是为了提升某方面的速度,解决某方面慢的问题。

作为一名开发人员,我们需要了解如何实现缓存,我们一般碰到的情况也就是 例4。

缓存的使用方法

读取数据/文件的时候,先从缓存中获取,如果缓存中存在,直接获取。如果缓存中不存在,再去数据/文件的原始位置(服务器/数据库)获取。

缓存什么数据

针对应用程序中增加的缓存,由于缓存的容量(内存)是有限的,所以缓存一般放的都是 不经常变动 经常访问 的数据

缓存回收

程序需要缓存的数据那么多,所以要根据情况回收一批,为其他数据提供空间。

那怎么个回收法呢?

按空间

设置缓存数据大小10M,缓存的数据超过10M,就扔掉一部分数据。

按时间

按存活时间:数据只能缓存4分钟或5分钟或几天,过了时间,就回收。
按空闲时间:数据一直没被访问过,都超过好几天了,那就回收吧,腾地。

按数据量

设置数据最多100条,超了100条,就回收一部分。

扫码分享
版权说明
作者:SQBER
文章来源:http://www.sqber.com/articles/cache.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。