博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis 面试知识点笔记(一)Redis简介
阅读量:6814 次
发布时间:2019-06-26

本文共 976 字,大约阅读时间需要 3 分钟。

hot3.png

问:memcache和Redis的区别?

memcache :

  1. 只支持简单的数据类型(key-value)
  2. 不支持数据持久化存储
  3. 不支持主从
  4. 不支持分片

Redis:

  1. 数据类型丰富(String、Hash、List、Set、Sorted Set)
  2. 支持数据磁盘持久化存储
  3. 支持主从
  4. 支持分片

问:为什么redis能这么快?10W+qps

  1. 完全基于内存,纯粹的内存操作效率高
  2. 数据结构简单,对数据操作简单。没有数据关联,存储结构就是hashmap 查找更快
  3. 采用单线程,单线程也能处理高并发请求,想多核也可启动多实例来利用多核特性。(单线程是指主线程,其他也有用到子线程如持久化、周期性处理等。所有的读写请求都由一个线程串行处理,所以不会有并发问题,也避免了频繁的上下文切换和锁竞争,效率更高)
  4. 使用多路IO复用模型,非阻塞IO

Redis 采用的IO多路复用函数:epoll、kqueue、evport、select?

  • 因为redis会在不同的平台运行会选择不同的多路复用函数,因地制宜。
  • redis会在编译的时候优先选择时间复杂度为O(1)的IO多路复用函数作为底层实现(Solaries 10 中的 evport、linux的epoll、macos\FreeBSD的kqueue)这些函数都使用了内核内部的结构,并且能够服务几十万的文件描述符。
  • 但是如果当前编译环境没有上述函数,就会选择 select 作为备选方案,由于其在使用时会扫描全部监听的描述符,所以其时间复杂度较差 O(n),并且只能同时服务 1024 个文件描述符,所以一般并不会以 select 作为第一方案使用。
  • 基于react设计模式监听IO事件。实现文件事件处理器(每一个网络连接其实都对应一个文件描述符)文件事件处理器使用 I/O 多路复用模块同时监听多个 FD,当 accept、read、write 和 close 文件事件产生时,文件事件处理器就会回调 FD 绑定的事件处理器。 虽然整个文件事件处理器是在单线程上运行的,但是通过 I/O 多路复用模块的引入,实现了同时对多个 FD 读写的监控,提高了网络通信模型的性能,同时也可以保证整个 Redis 服务实现的简单

 

转载于:https://my.oschina.net/pentakill/blog/3045511

你可能感兴趣的文章
docker 基础
查看>>
Angular基础(七) HTTP & Routing
查看>>
使用Freeline提高你的工作效率
查看>>
FTP服务器
查看>>
爬百度新闻
查看>>
TCP协议与UDP协议的区别
查看>>
软件定时器算法
查看>>
pt-archiver 数据删除、迁移工具使用
查看>>
下载网站地址
查看>>
桌面虚拟化浅谈
查看>>
我的友情链接
查看>>
将 TensorFlow 移植到 Android手机,实现物体识别、行人检测和图像风格迁移详细教程...
查看>>
Hyper-V 自动化支持技术
查看>>
VS2010启动调试时报“未能将脚本调试器附加到计算机”
查看>>
Python中的一些面试题(2)
查看>>
无法启动 DTC 分布式事务服务,MS DTC 发生服务特定错误: 3221229584
查看>>
基于HTTP协议的轻量级开源简单队列服务:HTTPSQS
查看>>
【精品教程】Android高手进阶教程pdf分享
查看>>
VB.NET 自动打包程序
查看>>
CISCO引擎RPR SSO
查看>>