《Redis官方教程》- 事件库

简介:

为什么需要一个事件库(Event Library)?

让我们通过一系列Q&A来弄明白。

Q:你期望网络服务器都做些什么事情?
A:在它监听的端口上等待连接的到来,然后接收(accpet)它们。

Q:调用accept会产生一个描述符,我该怎么处理它?
A:先保存这个描述符,然后对它进行非阻塞(non-blocking)的读写(read/write)操作。

Q:为什么读写操作必须用非阻塞的方式呢?
A:如果服务器阻塞在文件(在Unix世界socket也是文件)I/O操作上,这期间它还怎么处理其他连接的请求呢?

Q:我想我必须在socket上做很多次非阻塞操作去看它什么时候准备好,是这样吗?
A:是的,这就是事件库为你所做的工作,现在你明白了。

Q:那事件库是怎么做到的呢?
A:使用操作系统的轮询(polling)机制以及定时器(timer)。

Q:有没有开源的事件库能完成你说的这些功能?
A:当然有,libeventlibev就是这样的事件库。

Q:Redis用开源事件库来处理Socket I/O吗?
A:不,因为一些原因Redis使用自己的事件库。

相关文章
|
消息中间件 NoSQL Java
Redis监听Key的过期事件
在redis.conf配置文件中有个配置项:notify-keyspace-events " " ,默认是没有key的过期监听的,我们需要将其开启
2871 0
|
NoSQL Java Redis
Spring Boot 监听 Redis Key 失效事件实现定时任务
Spring Boot 监听 Redis Key 失效事件实现定时任务
508 0
|
NoSQL 网络协议 Redis
Redis从入门到精通之Redis事件机制详解
Redis采用事件驱动机制来处理大量的网络IO,这是Redis实现高性能的关键之一。Redis并没有采用成熟的开源方案如libevent或libev,而是自己实现了一个非常简洁的事件驱动库ae_event。
1242 110
Redis从入门到精通之Redis事件机制详解
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
1284 8
|
设计模式 NoSQL 网络协议
大数据-48 Redis 通信协议原理RESP 事件处理机制原理 文件事件 时间事件 Reactor多路复用
大数据-48 Redis 通信协议原理RESP 事件处理机制原理 文件事件 时间事件 Reactor多路复用
337 2
|
缓存 NoSQL PHP
使用PHP-redis实现键空间通知监听key失效事件的技术与代码示例
通过上述方法,你可以有效地在PHP中使用Redis来监听键空间通知,特别是针对键失效事件。这可以帮助你更好地管理缓存策略,及时响应键的变化。
521 4
|
存储 NoSQL Java
大事件后端项目34_登录优化----redis_SpringBoot集成redis
大事件后端项目34_登录优化----redis_SpringBoot集成redis
大事件后端项目34_登录优化----redis_SpringBoot集成redis
|
存储 NoSQL Redis
大事件后端项目33_登录优化-redis_思路分析
大事件后端项目33_登录优化-redis_思路分析
|
NoSQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之如何确保多并发sink同时更新Redis值时,数据能按事件时间有序地更新并且保持一致性
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
NoSQL Go Redis
如何使用 Go 和 `go-redis/redis` 库连接到 Redis 并执行一些基本操作
如何使用 Go 和 `go-redis/redis` 库连接到 Redis 并执行一些基本操作
623 1