Redis和memcache区别

122 阅读2分钟
  • memcache key 不能超过 250 个字节,value 不能超过 1M 字节,redis的key和string类型value限制均为512MB
  • memcache key 的最大失效时间是 30 天,Redis 无时间限制;
  • memcache 只支持 K-V 结构,Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储
  • memcache 不提供持久化和主从同步功能,Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中
  • Memcached 是多线程,非阻塞IO复用的网络模型;Redis使用单线程的IO复用模型。
  • memcahed的内存分配是基于slab划分的,经过page(默认1M)申请内存,而后每一个slab会划分为好多的chunk,数据都存储在chunk中,redis为了屏蔽不一样平台之间的差别,Redis对内存分配函数进行了一层封装,程序中统一使用zmalloc,zfree一系列函数dom
  • memcahed基于libevent网络库,而redis是基于epoll网络模型,紧接着说下,异步
    • select,poll,epoll的区别分布式
    • select同步阻塞,最大文件描述符1024,memcached
    • poll同步阻塞,没有最大文件描述符限制,函数
    • epoll异步非阻塞,没有最大文件描述符限制。性能
    • select是轮询式的事件通知,
    • epoll是回调事件通知callback

key过时策略:

  • memcahed采用的消极策略,也就是get时候断定作删除,Redis除了消极策略,还有积极策略,积极清理就是每秒钟有一个定时任务会扫描10次
  •     1.随机测试100个设置了过时时间的key
  •     2.删除全部发现的已过时的key
  •     3.若删除的key超过25个则重复步骤1
  • memcahed只支持客户端的分布式,采用consistent hashing,redis有基于服务端的集群模式

\