学习笔记之初识Redis

什么是NoSQL

NoSQL是一个简称,常见的解释是Not Only SQL,翻译过来就是不仅仅是SQL。我们都知道SQL是关系型数据库的标准语言。那不仅仅是SQL,意思也就是NoSQL可以实现使用SQL以外的方式来实现数据的存储。现在一般使用NoSQL来指代非关系型数据库,这是区别于MySQL等传统的关系型数据库的一种新的数据库概念。
NoSQL的产生背景是在web2.0时代到来之后,数据爆发式增长,而传统的关系型数据库在处理器大数据的时候,性能问题又比较严重了,因而需要更高性能的数据库产品来发挥作用。需要注意的是,NoSQL的到来,不是因为功能性问题,而是因为性能问题。这也就是为什么NoSQL诞生十年了,也没能完全替代传统的关系型数据的原因之一。
NoSQL在数据的存储方式上与传统的关系型数据库存在差别,NoSQL的数据格式更加简单轻便,不像关系型数据库那样需要考虑各种数据之间的关系,甚至要考虑数据表与数据表之间的关系。这是一个常识“关系越是复杂的事物之间,要处理起来就越是要花费力气。”所以当数据超大的时候,要应付复杂的数据关系就是一件特别麻烦的事情。而NoSQL的轻便性就edies表现在NoSQL的数据结构上,几乎可以说NoSQL的数据之间是没有什么关系的,就是简单地将一大块数据存储在数据集中。这个就很像是一个文档了。

什么是Redis

Redies是一个NoSQL数据库,就像是MySQL是一个关系型数据库一样。注意了,这时候Redies已经不是一个概念了,而是这个概念的一个实现。所以现在就可以很正式地说Redis是一个非关系型数据库。

Redis的特点
  1. Redis是以键值对的形式存储数据的。可以简单地将Redies理解成一个大型的Map。因为Redis的key也是不可以重复的。

  2. Redis存储在缓存中。当然Redis也提供持久化操作。

    正式因为这两个特点,所以Redis是一个高性能的数据库的一个原因。数据结构简单,且存在缓存中可以提升存取数据。

Redis为什么这么快
开发语言

现在我们都用高级语言来编程,比如Java、python等。也许你会觉得C语言很古老,但是它真的很有用,毕竟unix系统就是用C实现的,所以C语言是非常贴近操作系统的语言。Redis就是用C语言开发的,所以执行会比较快。

纯内存访问

Redis将所有数据放在内存中,非数据同步正常工作中,是不需要从磁盘读取数据的,0次IO。内存响应时间大约为100纳秒,这是Redis速度快的重要基础。

单线程

单线程简化算法的实现,并发的数据结构实现不但困难且测试也麻烦。

单线程避免了线程切换以及加锁释放锁带来的消耗,对于服务端开发来说,锁和线程切换通常是性能杀手。

当然了,单线程也会有它的缺点,也是Redis的噩梦:阻塞。如果执行一个命令过长,那么会造成其他命令的阻塞,对于Redis是十分致命的,所以Redis是面向快速执行场景的数据库。

非阻塞多路I/O复用机制

这里“多路”指的是多个网络连接客户端,“复用”指的是复用同一个线程(单进程)。I/O 多路复用其实是使用一个线程来检查多个Socket的就绪状态,在单个线程中通过记录跟踪每一个socket(I/O流)的状态来管理处理多个I/O流。
I/O多路复用模型是利用select、poll、epoll函数可以同时监测多个I/O流的能力,这些函数会轮询一遍所有的I/O流(epoll只轮询真正发出了事件的流),依次处理返回了数据。

处于就绪状态的流,让单个线程高效地处理了多个连接请求,尽量减少网络IO的时间消耗,而且Redis是在内存中操作的,速度非常快。所以,Redis具有很高的吞吐量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值