java动态缓存成长小纪(三)——缓存大小估算

来源:互联网 发布:淘宝客推广位是什么 编辑:程序博客网 时间:2024/04/28 09:28

我觉得对缓存认识,仅仅会写缓存及其淘汰算法是肤浅的、不负责任的。我们还需要决定,什么样的数据是需要进行缓存,多大的数据才能进行缓存。

首先,缓存数据往往是读取次数非常频繁的,但是底层数据不能更新太快,否则会导致缓存的“脏读”。我在一本书上看到的是读写比要大于10。

另外,缓存数据不能太大,缓存数据过大会大大占用JVM内存空间,同样不利于程序响应。


所以,在添加缓存之前,需要知道缓存规模大小。


例:某个电网有大概100个水电站,系统需要提取这100个水电站的每日信息(double类型),时间尺度为15min,像这样的信息一共有10类(水位、气象、发电等...),问需要缓存多大?


答案:对于一个电站某日的1类信息,因为是每15min一次的,那么每小时4条数据,每天有96条数据,为double[96]。一共10类,即10个double[96],一共100个电站,故有100*10*double[96]的数据量。

大小可以估算一下:100*10*96*8≈8*10^5(bit),大约是1M的数据量。所以占用的内存空间不大。




0 0