Redis / Memcache

1. stackoverflow

memcached-vs-redis

1.1 What will give me better performance? Any pros or cons between Redis and Memcache?

Points to consider:

  • Read/write speed.
  • Memory usage.
  • Disk I/O dumping.
  • Scaling.

  • redis3.0提供cluster: 目前memcached相较于redis来说,已经不在具有明显优势,redis在许多方面已经超越了memcached.当前,redis3.0已经加入了集群功能,推出了beta版和release的candidate版本.过去,如果在memcached和redis之间选择,你会毫不犹豫的选择memcached,因为memcached拥有丰富的第三方集群扩展工具可以提供使用.现在redis本身已经提供了cluster功能,这种内在的支持对于管理来说更具有鲁棒性.与redis内建的主从和哨兵机制一样,cluster会是的redis更具有扩展性.

  • redis提供更多功能: 现在memcached所提供的所有特性redis都已经提供,并且额外还提供了许多新特性.下面列出一些redis所独有的功能:

  • 多种数据类型以及操作这些数据类型的命令;
  • 硬盘持久化;
  • 带乐观锁的事务 (WATCH/MULTI/EXEC);
  • 发布订阅;
  • value的上限达到512M;
  • 支持Lua脚本;
  • 内置支持集群;
  • 速度比memcached快,与memcached类似,易受到网络和内存的限制而不是cpu和其它瓶颈,很少成为应用速度下降的罪魁祸首;

结论: redis和memcached在性能和瓶颈方面都是相近的,如果不是已经在memcached上已经有了很大的投资,切换到redis是一个不错的选择.

1.2 Is memcached a dinosaur in comparison to redis?

  1. 不必太关注性能,就qps来说你两者都不会成为你的瓶颈;
  2. 应该关注内存使用量,对于简单的键值对,memcached要好一些,对于hash值,redis要好一些;
  3. 应该关注一下主从和持久化,这两个特性只有redis才具备;
  4. 应该关注你需要的操作,redis许多复杂的命令执行效率跟简单的get/set差不多,如果你有很多复杂操作的话,redis是个很好的选择; 即使你只用作cache,redis提供的额外的功能也会有很多好处.

2.为什么单线程的redis处理速度快

  1. 绝大部分请求是纯粹的内存操作(非常快速)
  2. 采用单线程,避免了不必要的上下文切换和竞争条件
  3. 非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间 EPOLL

results matching ""

    No results matching ""