这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理和特点,就是 redis 实际上是个单线程工作模型,

你要是这个都不知道,那后面玩儿 redis 的时候,出了问题岂不是什么都不知道?

还有可能面试官会问问你 redis 和 memcached 的区别,但是 memcached 是早些年各大互联网公司常用的缓存方案,

但是现在近几年基本都是 redis,没什么公司用 memcached 了。

redis 和 memcached 有啥区别?

redis 支持复杂的数据结构

redis 相比 memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, redis 会是不错的选择。

redis 原生支持集群模式

在 redis3.x 版本中,便能支持 cluster 模式,而 memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。

性能对比

存储小数据的时候redis性能更高

由于 redis 只使用单核,而 memcached 可以使用多核,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高。

而在 100k 以上的数据中,memcached 性能要高于 redis,虽然 redis 最近也在存储大数据的性能上进行优化,但是比起 memcached,还是稍有逊色。

redis 的线程模型

redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。

它采用 IO 多路复用机制同时监听多个 socket

为啥 redis 单线程模型也能效率这么高?

  • 纯内存操作
  • 核心是基于非阻塞的 IO 多路复用机制

转载于:https://www.cnblogs.com/lyon91/p/10456429.html

redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?...相关推荐

  1. 缓存数据库面试 - redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?

    缓存数据库面试 - redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 面试题 redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis ...

  2. redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?

    redis 的线程模型 redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型.它采用 IO 多路复用机制同时监听 ...

  3. 为什么 Redis 单线程却能支撑高并发?

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 7 分钟. 最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 ...

  4. 面试系列12 redis和memcached有什么区别

    (1)redis和memcached有啥区别 这个事儿吧,你可以比较出N多个区别来,但是我还是采取redis作者给出的几个比较吧 1)Redis支持服务器端的数据操作:Redis相比Memcached ...

  5. redis跟memcached有啥子区别

    一 性能对比: 由于 redis 只使用单核,而 memcached 可以使用多核,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高.而在 100k 以上的数据中,mem ...

  6. 为什么 Redis 单线程能支撑高并发?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | draveness.me/redis-io-m ...

  7. 为何单线程的 Redis 却能支撑高并发?

    最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的 ...

  8. Redis 是单线程凭什么能支撑高并发

    最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的 ...

  9. 单线程的Redis为什么却能支撑高并发?

    作者:Draveness 原文链接:draveness.me/redis-io-multiplexing 最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适 ...

最新文章

  1. R语言使用ggplot2包使用geom_density()函数绘制分组密度图(分组拆分画板基于facet)实战(density plot)
  2. android 固定底部导航,Android如何实现底部菜单固定到底部
  3. Understand one Simple Factory Pattern
  4. IOS可执行文件学习总结
  5. (58)Verilog HDL事件或:or、,
  6. Android 12发布!小米11全系、Redmi K40 Pro宣布首批支持
  7. Android在string.xml中定义html文档并加载显示,以及拦截WebView链接事件
  8. Java、JSP医院药库管理系统
  9. 计算机信息安全专业代码0839,网络安全/信息安全专业大学排名(2017-2018-安全导航)...
  10. IT30:30岁IT男未来10年规划第1篇(2009-2020)
  11. 产品文档 | PRD写作手册
  12. resultful规范使用
  13. golang开发:WaitGroup Mutex
  14. 基于离散小波变换 (DWT)的图像信息隐藏算法
  15. 友盟推送成功但是收不到
  16. MTD,文件系统,存储器分区的个人理解
  17. The ADB binary found at XX is obsolete and has seriousperformance problems with the Android Emulator
  18. Tomcat8:java.lang.IllegalArgumentException: 为此cookie指定的域[.xxx.com]无效
  19. 国企单位软考高级是否值得备考?
  20. 嵌入式产品的研发流程

热门文章

  1. Fedora 12 安装配置subversion
  2. python爬虫教程入门-零基础入门Python爬虫不知道怎么学?这是入门的完整教程
  3. python画-用Python画一颗特别的心送给她
  4. 精通python能干嘛-很多人说精通Python?对于精通我们存在哪些误区
  5. 怎么在python下载网站内容-用Python下载一个网页保存为本地的HTML文件实例
  6. python散点图拟合曲线-python – 将曲线拟合到散点图的边界
  7. python语言自学-【经验分享】自学Python的学习顺序!附学习资料
  8. 软件测试用python一般用来做什么-做软件测试的, python应该掌握成怎么样 ?
  9. 怎么把python结果全部显示-python – 如何展开输出显示以查看更多列?
  10. python叫什么-Python为什么叫爬虫?Python与爬虫有什么关系?