- 过期策略
redis采用惰性删除和定期删除,memcached只采用了惰性删除。惰性删除和定期删除的定义详见“key的过期策略”章节。 - 数据类型
memcached只支持简单的k-v数据,也就是value只能是string类型。redis除了支持string数据类型,还支持hashs、set、sortedset、list、hyperloglog等数据类型,数据类型更加丰富,应用场合更加多样。 - 订阅/发布
memcached不支持订阅/发布模式这样的通知机制,而redis是支持的。所以redis可以当做消息队列使用。 - 事务
redis支持事务,memcached不支持事务。 - 数据备份,有效性,持久化等
memcached不保证数据的有效性,slab内部基于LRU也会自动淘汰旧数据,客户端不能假设数据在服务器端的状态,这可能会成为你需要精确自行控制cache生命周期的一个障碍。
memcached也不做数据的持久化。
redis能够保证数据的有效性,并且支持主从复制和持久化。
redis可以使用pipeline和script(LUA脚本)这两种方式可以有效减少网络通信开销,增加数据吞吐率。