• 1. 浮生未歇 - 双笙
  • 2. Where Civilization Once Lay - Jeremiah Pena
  • 3. Beyond the Stars - Cristian Onofreiciuc
  • 4. Something Just Like This - ColdPlay
  • 5. 城南花已开 - 三亩地
  • 6. 雲流れ - みかん箱
  • 7. 水 - LeeAlive
  • 8. 水面の満月 - 神乃木製作所
  • 9. 雨道 - Otokaze
  • 10. Masked Heroes - Vexento
person

Redis VS Memcached?

  建站初期,服务器上Redis和Memcached都装了,然而大部分插件都忽略了这两者的存在,直接写缓存进MySQL了==

  两者都开对服务器还是有一定负担的,所以很有必要比较一下。

  我的ThinkPad笔记本上安装的是Redis,当时看中了其数据持久化和多数据结构的特点,用下来感觉也还可以。

  但是对于一个面向Web的I/O应用,我们似乎应该从不同的角度去思考。


面向Web的IO模型?

  基于非阻塞IO复用的网络模型设计的Memcached有个好,多线程(监听主线程+worker子线程)充分发挥了多核优势,其性能不必多言。

  而Redis使用单线程的IO复用模型,单线程可以将速度优势发挥到最大,但在排序、聚合等操作中,单线程会严重影响整体吞吐量。CPU计算过程中,整个IO调度都是被阻塞的。


内存管理机制?

  Memcached使用预分配的内存池的方式,Redis使用现场申请内存的方式来存储数据。显然,Redis更适合作为存储而不是cache。


数据一致性问题?

  Memcached提供了cas命令,可以保证多个并发访问操作同一份数据的一致性问题。

  Redis没有提供cas命令,但提供了“事务”的功能,可以保证一串命令中间不会被任何操作打断。


集群管理?

  Memcached本身并不支持分布式,因此只能在客户端通过像一致性Hash这样的分布式算法来实现分布式存储。

  Redis更偏向于在服务器端构建分布式存储,支持了分布式存储功能。


结论

  对于我那低性能小内存的服务器,Memcached看起来更加适合I/O网络应用。