.NET性能优化-使用内存+磁盘混合缓存
我们回顾一下上一篇文章中的内容,有一个朋友问我这样一个问题:
我的业务依赖一些数据,因为数据库访问慢,我把它放在Redis里面,不过还是太慢了,有什么其它的方案吗?
其实这个问题比较简单的是吧?Redis其实属于网络存储,我对照下面的这个表格,可以很容易的得出结论,既然网络存储的速度慢,那我们就可以使用内存RAM存储,把放Redis里面的数据给放内存里面就好了。
| 操作 | 速度 |
|---|---|
| 执行指令 | 1/1,000,000,000 秒 = 1 纳秒 |
| 从一级缓存读取数据 | 0.5 纳秒 |
| 分支预测失败 | 5 纳秒 |
| 从二级缓存读取数据 | 7 纳秒 |
| 使用Mutex加锁和解锁 | 25 纳秒 |
| 从主存(RAM内存)中读取数据 | 100 纳秒 |
| 在1Gbps速率的网络上发送2Kbyte的数据 | 20,000 纳秒 |
| 从内存中读取1MB的数据 | 250,000 纳秒 |
| 磁头移动到新的位置(代指机械硬盘) | 8,000,000 纳秒 |
| 从磁盘中读取1MB的数据 | 20,000,000 纳秒 |
| 发送一个数据包从美国到欧洲然后回来 | 150 毫秒 = 150,000,000 纳秒 |
相关文章