- 数据缓存方面,可选用Redis和Memcached来构建集群,降低数据库服务器的压力
- 消息队列在某些场景下是非常有用的,如秒杀,抢购等,可以使用Redis、RabbitMQ等开源组件
- 当某些数据库或者数据表数据量非常大的时候,可以对他们进行水平和垂直切割,需要用到数据库代理,如MySQL Proxy,Amoeba,Cobar等
- 负载均衡也有很多成熟的方案,如lvs,Nginx,搭配KeepAlive以确保在发生单点故障时能自动切换。
- 风格:Memcached只是个简单的Key-Value存储系统,它没有备份和持久化的功能,而Redis更像是一个NoSQL数据库系统。
- 功能:Redis提供了一些Memcached没有的功能,它支持的数据类型更加丰富,支持事务,支持master-slave,支持集群。
- 数据一致性:在多线程环境下,Memcached在这一点上要比Redis做的好,但也带来了性能上的损耗。
- 内存管理:Memcached的内存利用率要比Redis高。
- 性能:因为Memcached只是简单的存储Key-Value,在缓存数据很大时,性能要优于Redis,但在单核应用上存储小于100K的数据时,Redis性能要比Memcached高。
- 网络IO:由于Redis支持更多的数据结构,所以能有效的减少网络IO的次数和数据体积,而 Memcached在存储复杂数据时稍显逊色。