一、事务
一个事务包含了多个命令,服务器在执行事务期间,不会改去执行其它客户端的命令请求。
事务中的多个命令被一次性发送给服务器,而不是一条一条发送,这种方式被称为流水线,它可以减少客户端与服务器之间的网络通信次数从而提升性能。
Redis 最简单的事务实现方式是使用 MULTI 和 EXEC 命令将事务操作包围起来。
二、事件
Redis服务器是一个事件驱动程序。
文件事件
服务器通过套接字和客户端或者其他服务器进行通信,文件事件就是对套接字操作的抽象。
redis基于reactor模式开发了自己的网络事件处理器,使用IO多路复用程序来同时监听多个套接字,并将到达的事件传送给文件事件分排期,分排期会根据套接字产生的事件类型调用相应的事件处理器。
时间事件
服务器有一些操作需要在给定时间点执行,时间事件是对这类定时操作的抽象。其又大概分为:
1.定时事件:是让一段程序在指定的时间之内执行一次;
2. 周期性事件: 是让一段程序每隔指定时间就执行一次。
Redis 将所有时间事件都放在一个无序链表中,通过遍历整个链表查找出已到达的时间事件,并调用相应的事件处理器。
事件的调度和执行
服务器需要不断监听文件事件的套接字才能得到待处理的文件事件,但是不能一直监听,否则时间事件无法在规定的时间内执行,因此监听时间应该根据距离现在最近的时间事件来决定。