MySQL&Redis数据库
MySQL&MongoDBjson
Redis&Memcached缓存
Memcached使用预分配的内存池的方式,使用slab和大小不一样的chunk来管理内存,Item根据大小选择合适的chunk存储,内存池的方式能够省去申请/释放内存的开销,而且能减少内存碎片产生,但这种方式也会带来必定程度上的空间浪费。服务器
Redis使用现场申请内存的方式来存储数据,而且不多使用free-list等方式来优化内存分配,会在必定程度上存在内存碎片,Redis根据存储命令参数,会把带过时时间的数据单独存放在一块儿,并把它们称为临时数据,非临时数据是永远不会被剔除的,即使物理内存不够,致使swap也不会剔除任何非临时数据(但会尝试剔除部分临时数据),因此Redis更适合做为存储而不是cache。网络
Redis提供了一个“事务”的概念,Redis的事务仅仅只是将一组操做按顺序进行操做,在这之间不会插入任何其余命令,从而保证数据的一致性,可是这种方式很容易形成操做阻塞。Memcached提供了相似于乐观锁同样的cas操做,会快速的返回处理成功或失败,不会对其余数据操做产生影响。