不同点:
(1) redis中并不是所有数据在有效期内只能常驻内存的(如果需要,可定期同步持久化到磁盘),这是和memcached相比一个最大的区别(memcached中的数据在有效期内是以键值对的形式常驻内存的)
(2) redis不仅仅支持简单的键值对类型的数据,同时还提供list,set,hash等数据结构的存储;memcached仅支持简单的键值对类型的数据,但是memcached却可以缓存图片、视频等等数据
(3) redis支持数据的备份,即master-slave模式的数据备份
(4) redis支持数据的持久化和数据同步,可以将内存中的数据保存在磁盘中,重启系统后可以再次加载进行使用,缓存数据不会因此而丢失.memached缓存数据是常驻内存的,重启系统后数据就没了
(5) redis可以通过expire设定有效期,memcached在set数据的时候可以指定要缓存的数据永不过期
(6) redis可以做一主多从;memcached也可以做一主多从
(7) redis当物理内存用完时,可以将一些很久没用到的value交换到磁盘;memcached当物理内存用完后就会自动清理一些早期的数据
相同点:
(1)redis和memcached都是将数据存放在内存中,都是内存数据库
(2)redis和memcached都可以做一主多从
性能:
(1)redis根据其官方的测试结果:在50个并发的情况下请求10w次,写的速度是110000次/s,读的速度是81000次/s
(2)redis将键名与值的最大上限各自设定为512MB;memcached则将键名限制在250字节,值也被限制在不超过1MB,且只适用于普通字符串.
何时使用memcached:
(1)小型静态数据:当我们需要缓存小型静态数据的时候可以考虑memcached,最具代表性的例子就是html代码片段;因为memcached的内部内存管理机制虽然不像redis的那样复杂,但却更具实际效率,这是因为memcached在处理元数据时所消耗的内存资源相对更少.作为memcached所支持的惟一一种数据类型,字符串非常适合用于保存那些只需要进行读取操作的数据,因为字符串本身无需进行进一步处理.