1. 操作都是原子性

redis是单线程,可以保证原子性。异步、非阻塞的。

redis单线程,如何实现异步和非阻塞?

同步/异步:首先同步和异步主要是从消息通知机制来讲起的。

同步:一个任务的完成必须依赖另一个任务,两个要么都成功要么都失败,是一种可靠的任务序列。当一个同步调用发生后,调用者必须等待返回结果,才能继续后面任务的执行。

异步:不需要等待被依赖任务的完成,只需要完成自己的任务就可以,所以是不可靠任务序列。当一个异步调用发生后,调用者不必等待返回结果,调用者可以去做其他的事情,被调用部件在处理完成后,通过(状态、通知、回调)来通知调用者。

阻塞/非阻塞:阻塞和非阻塞和调用者等待消息通知时的状态有关。很重要,不要和同步混淆。

阻塞:调用者在等待通知的过程中,不能执行其他业务,傻傻的等待通知到来。

非阻塞:和阻塞相反,调用者可以去执行其他业务。

2. 高性能、高响应

Redis 给予内存读写,响应非常快,每秒可以执行大约 110 000 个写入操作,或者 81 000 个读操作,其速度远超数据库。如果存入一些常用的数据,就能有效提高系统的性能。当然也支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用

Redis快的原因?

1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。

2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;

3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU;

4、使用多路I/O复用模型,非阻塞IO;

5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求;

3. 支持 6 种数据类型

是字符串、哈希结构、列表、集合、可排序集合和基数

4. 丰富的特性

Redis还支持 publish/subscribe, 通知, key 过期等等特性

发表评论

邮箱地址不会被公开。