redis为什么把数据放到内存中?

Java高并发框架

这个问题问得有问题!!

首先,redis确实是一个内存型的数据库系统,把大量数据在内存中使用,并快速存取,但是,redis提供了以数据库文件的方式持久化数据的选择,通过使用bgsave,save等命令,可以把缓存中的数据存储到磁盘中进行永久性保存!


把题目换种问法!为什么内存读取比磁盘读取数据速度快?

1,内存是电器元件,利用高低电平存储数据,而磁盘是机械元件(去买电脑的时候写着5400r/min或者7200r/min),电气原件速度超级快,而磁盘因为在每个磁盘块切换的时候,磁头会消耗比较多的时间,也就是IO时间长,所以性能没发比!


2,磁盘的数据进行操作的时候也都是读取到内存中,由CPU进行操作的,所以直接放在内存中的数据,读取速度肯定快了很多很多!

那么内存有哪些缺点呢?

1,丢数据:内存因为是存储的高低电平,断电之后数据全部丢失,而磁盘存储了二进制文件,断电以后数据依然存在!

2,内存贵:一块4G的内存和一个500g的磁盘价格差不多,因为内存设计工艺要求更高,材料也更加昂贵!

所以,不仅仅是redis,几乎所有的缓存系统都会先用到内存作为数据快速读取的基本保证,然后才能有扩展数据持久化的可能!

redis作为分布式的可持久化的单线程的key-value缓存系统,有着大量的优点,吸引着广大开发者的关注,同时在保证数据一致性等问题上通常作为首选条件!


关于redis集群,指令,开启持久化,防止内存穿透等问题,之后会有提及,敬请关注。。


分享到:


相關文章: