redis和Memcached

redis和memcached对比:
1、redis支持服务端的数据操作:
    redis相比memcached来说,拥有更多的数据库结构和并支持更加丰富的数据操作。
    memcached中需要将数据拿到客户端进行类似的修改再set回去,大大增加了网络IO的次数和数据体积。
    redis中这些复杂的操作通常和一般的get/set一样高效。
    所以,如果需要缓存能够支持更加复杂的结构和操作,redis可以作为首选。
2、内存使用效率的对比:
    使用简单的key-value存储的话,memcached的内存利用率更高,而如果redis使用hash结构来做key-value存储,由于其组合式压缩,其内存利用率高于memached。
3、性能对比:
     由于redis只使用单核,而memcahed可以用多核,所以平均每一个核上redis在存储小数据时相比memcahed性能更高。而在100k以上的数据中,memcached性能要高于redis.

4、数据类型支持不同:
   与memcached仅支持简单的key-value的结构数据记录不同,redis支持的数据类型要丰富的多。最为常用的数据类型主要由五种:String,Hash,List,Set和Sorted Set.Redis内部使用一个
redisObject对象来表示所有的key和value.

5、内存管理机制:
   在redis中,不是所有的数据都一直存储在内存中。这是memcahed相比一个最大的区别。当物理内存用完时,redis可以将很久没有用的value交换到磁盘。

   对于像redis和memcahed这种基于内存的数据库系统来说,内存管理的效率高低是影响系统性能的关键因素。

   memcached默认使用Slab Allocation机制管理内存,其主要的思想按照预先规定大小,将分配的内存分割成特定长度的块存储长度相应的key-value数据记录,以完全解决内存随便问题。
  
   redis的内存管理主要通过源码中zmalloc.h和zmalloc.c两个文件来实现。redis为里方面内存管理,在分配一块内存之后,会将这块内存的大小存入块的头部。

6、数据持久化支持:
  
    redis虽然是基于内存的存储系统,但是它本身是支持内存数据的持久化的,而且提供了两种主要持久化的策略:RDB快照和AOF日志。而memcached是不支持数据持久话操作的。

7、集群管理的不同:

    memcached是全内存的数据缓冲系统,redis虽然支持数据的持久化,但是全内存毕竟才是其高性能的本质。作为基于内存的存储系统,机器物理内存的大小就是系统能够容纳的最大数据量。如果需要处理的数据量超过了单台机器的物理内存的大小,就需要构建分布式集群来扩展存储能力。











  







  






猜你喜欢

转载自kerryg.iteye.com/blog/2224393
今日推荐