为了以后查阅方便,所以转了各位的博文,感谢各位原博主。
http://www.searchtb.com/2011/05/redis-storage.html redis内存存储结构分析
http://blog.csdn.net/tonysz126/article/details/8280696/ redis与memcached的区别
http://kenby.iteye.com/blog/1423989 Memcached源码分析之内存管理篇
http://www.tuicool.com/articles/nU7vYb memcached内存管理机制详解
http://www.cnblogs.com/ceecy/p/3279407.html Redis使用总结之与Memcached异同
总结:
1.Redis使用最佳方式是全部数据in-memory。
2.Redis更多场景是作为Memcached的替代者来使用。
3.当需要除key/value之外的更多数据类型支持时,使用Redis更合适,redis支持数据类型(String、List、Hash、Set、SortdSet)。
4.当存储的数据不能被剔除时,使用Redis更合适。
memcached 多线程,不支持持久化。
redis 单线程,特定情况下会持久化到磁盘。
.网络IO模型方面:Memcached是多线程,分为监听线程、worker线程,引入锁,带来了性能损耗。Redis使用单线程的IO复用模型,将速度优势发挥到最大,也提供了较简单的计算功能
.内存管理方面:Memcached使用预分配的内存池的方式,带来一定程度的空间浪费 并且在内存仍然有很大空间时,新的数据也可能会被剔除,而Redis使用现场申请内存的方式来存储数据,不会剔除任何非临时数据 Redis更适合作为存储而不是cache
.数据的一致性方面:Memcached提供了cas命令来保证.而Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断
. 存储方式方面:Memcached只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能
一句话小结一下:Redis是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。