相似处:
内存内、键值数据存储方案。均属于NoSQL家族,而且都基于同样的键值数据模型。双方都选择将全部数据保存在内存当中,这自然也就让它们成为非常理想的缓冲层实现方案。
2:开源项目
3:Memcached与Redis在任何一种可行性编程语言领域都拥有能够提供支持的客户端库,极易上手
不同处:
1:Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;
2:Memcache只有k/v类型数据,Redis提供list,set,hash等数据结构的存储;
3:Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;
4:过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10;
5、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从;
6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化);
7、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复;
8、Redis支持数据的备份,即master-slave模式的数据备份;
9、应用场景不一样:Redis出来作为NoSQL数据库使用外,还能用做消息队列、数据堆栈和数据缓存等;Memcached适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等。
何时应该使用Memcached
1:小型静态数据进行缓存处理,最具代表性的例子就是HTML代码片段
2:(纯String类数据操作,不需要其他处理)作为Memcached所支持的惟一一种数据类型,字符串非常适合用于保存那些只需要进行读取操作的数据,因为字符串本身无需进行进一步处理。
何时应该使用Redis
Redis当中提供160多种可用命令
Memcached将键名限制在250字节,值也被限制在不超过1MB,Redis则将键名与值的最大上限各自设定为512MB,且支持二进制格式