很多开发者都认为Redis不可能比Memcached快,Memcached完全基于内存,而Redis具有持久化保存特性,即使是异步的,Redis也不可能比Memcached快。但是测试结果基本是Redis占绝对优势。一直在思考这个原因,目前想到的原因有这几方面。

  • Libevent。和Memcached不同,Redis并没有选择libevent。Libevent为了迎合通用性造成代码庞大(目前Redis代码还不到libevent的1/3)及牺牲了在特定平台的不少性能。Redis用libevent中两个文件修改实现了自己的epoll event loop(4)。业界不少开发者也建议Redis使用另外一个libevent高性能替代libev,但是作者还是坚持Redis应该小巧并去依赖的思路。一个印象深刻的细节是编译Redis之前并不需要执行./configure。
  • CAS问题。CAS是Memcached中比较方便的一种防止竞争修改资源的方法。CAS实现需要为每个cache key设置一个隐藏的cas token,cas相当value版本号,每次set会token需要递增,因此带来CPU和内存的双重开销,虽然这些开销很小,但是到单机10G+ cache以及QPS上万之后这些开销就会给双方相对带来一些细微性能差别(5)。

最新文章

  1. WPS for Linux(ubuntu)字体配置(字体缺失解决办法)
  2. cocoaPod的使用
  3. jquery 选择器 -高级使用 新的 心得
  4. Tempter of the Bone---hdu1010(dfs+剪枝)
  5. javascript常见错误
  6. Android 布局之DrawLayout
  7. phpcms v9 get调用标签整理
  8. PJSUA2开发文档--第三章 PJSUA2高级API
  9. 20165306 Exp4 恶意代码分析
  10. Docker 创建 mongo 容器
  11. 用GDB调试程序(七)
  12. 一名网工对Linux运维的一次经历
  13. 微信小程序开发工具
  14. vs2015的visual assist X options安装过程
  15. Linux基础命令---tune2fs
  16. php数组转化为字符串
  17. 安装配置博客WordPress
  18. 6.9-JDBC
  19. 160517、nginx负载均衡详解
  20. UVA10954:Add All(优先队列)

热门文章

  1. jzoj100031
  2. svn自己的一些使用方法总结
  3. Vue环境搭建及node安装过程整理
  4. 理解JavaScript的数值型数据类型
  5. 【学习笔记】linux bash script
  6. 第7章—SpringMVC高级技术—处理multipart形式的数据
  7. 正则中str.match(pattern)与pattern.exec(str)的区别
  8. JDBC链接oracle数据库
  9. 谈谈hadoop集群启动时进程那回事
  10. jdk1.6 改 jdk1.7或jdk1.8(改回也可以)(图文详解)