在介绍redis和mysql之前,先说一下内存和磁盘,
- 内存是计算机内存储器,磁盘是计算机外存储器;
- 存储在内存中的数据,如果断电后数据会丢失,而存储在磁盘中的数据则是持久化的,不会丢失。
- 内存中存储的是工作中用到的数据,磁盘中存储暂时不用的数据。
mysql是关系型数据库,数据是写在磁盘上的,这也就是为什么说mysql是持久化存储的原因了。但是在我们进行数据访问的时候,就涉及到IO操作,那么就需要访问磁盘。如果每次访问数据都去访问磁盘的话,会大大降低我们的程序执行效率。因此,设计了缓存,将经常访问的数据存储在缓存(memcache)中,大大提高了程序的执行效率。
redis是非关系型数据库,属于NoSQL(not only SQL),以key-value的形式存储在内存中,当然,它也支持持久化的存储,只需要在下次重启时在加载就可以了,而且redis的读取速度非常快。memcache只支持String数据,而redis可以支持String,list,hash,set,zset。
在大型网站中,一般会采用redis+mysql相结合的形式,进行数据访问时,先访问redis中的数据,如果redis中没有找到,就会去mysql中进行查找。