NoSQL因其优势,目前是大行其道,而Memcached和Redis更是NoSQL中的明星。二者同为Key-Value型,且同样优秀,少不了一番比较。以下是一些简单的比较,不涉及底层基础等。
1.存储最大值
Memcached的key最大为250字节,value最大为1MB;Redis的key和value最大都是512MB。
2.数据类型
Memcached存储的类型仅支持key-value类型;Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
3.数据备份
Memcached不支持数据备份;Redis支持master-slave模式的数据备份,可搜:Redis数据备份与恢复。
Redis支持数据持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
可持久化(一边运行,一边把数据往硬盘中备份一份,防止断电等情况导致数据丢失,等断电情况恢复之后,Redis再把硬盘中的数据恢复到内存中),保证了数据的安全。
4.灾难恢复
Memcached不可恢复,即restart之后数据也会清空;Redis可以恢复。
5.性能比较
放上引用的一段话,链接地址会在下文给出:
由于Redis只使用单核,而Memcached可以使用多核,所以在比较上,平均每一个核上 Redis在存储小数据时Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储 大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈。
6.持久化
这一点可以说是二者之间本质上的区别,同时也是上一点灾难恢复的基础。Memcached不可以持久化,所有的数据都在内存中。Redis有两种持久化的方式:RDB(快照)方式和AOF(追加)方式,可搜:Redi持久化。
7.使用场景
私以为,Memcached足以应对一般网站的缓存需求,此博客既是使用Memcached。如果有更多的需求,如持久化、可靠性或者更多数据类型,应当考虑Redis。
以上,是二者之间的一些区别。网上关于这个话题讨论已久,同时也是面试的经典题,相关文章不胜枚举,希望各位在此篇中取其精华,善加利用。