在众多NoSQL产品中,Redis与Memcached是最耀眼的两个明星,哪个更优秀呢?在实际应用时,应该如何选择?本着追本溯源的原则,我们先来看看,NoSQl究竟是要解决什么问题。
它的由来
随着互联网的发展、网民数量和在线时长的增加,一些主流网站经常会遇到超高访问量的情况。这时,使用单个传统数据库,比如MySQL,在遇到性能问题时,就无法有效应对了。优化数据库结构和索引,成为当务之急,为缓解数据库的压力,缓存技术开始被程序员们大量使用。
当访问量进一步增大后,势必要将单台web机器升级为多台,与此同时,Memcached成为了配套的必须。再后来,只读数据库和负载均衡的引入,让架构变的更加完善。当超大规模和超高并发,逐渐成为常态,可以解决大规模数据集合、多重数据种类的NoSQL,开始了非常迅速的发展。
它的定义与主要用途
NoSQL( Not Only SQL ),意为“不仅仅是SQL”,泛指非关系型的数据库。它的应用场景中,通常会有以下五项要求:
- 数据模型比较简单;
- 需要灵活性更强的IT系统;
- 对数据库性能要求较高;
- 不需要高度的数据一致性;
- 对于给定key,比较容易映射复杂值的环境。
对比Redis与Memcached
了解了NoSQL的由来,我们具体看看Redis与Memcached具体有哪些不同。
-
首先比较NoSQL最关注的性能
由于Redis无法使用多核,在存储大数据(大于100K)时,性能要比Memcached逊色一些。
-
是否可以持久化
Redis有两种持久化的方式:RDB(快照)方式和AOF(追加)。由于Memcached的所有的数据都在内存中,它不可以持久化。
-
支持的数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。而Memcached仅支持key-value类型。
-
数据一致性
Redis事务支持比较弱,只能保证事务中的每个操作连续执行。Memcached 在并发场景下,用cas保证一致性
-
存储的最大值
Redis的key和value最大都是512MB。而Memcached的key最大为250字节,value最大为1MB。
总结
存在的,就是合理的。尺有所长、寸有所短,在真实的场景中,选择最适合的就好。