gpt4 book ai didi

c++ - hiredis Redis 库是否为异步回调创建自己的线程

转载 作者:IT王子 更新时间:2023-10-29 05:57:33 25 4
gpt4 key购买 nike

我在多线程环境中使用 Redis,对它的运行方式有疑问。我在我的 c++ 应用程序中使用 hiredis c 库。

我的问题是:如果我在触发回调时使用异步模式,是否会在 Redis 客户端创建的另一个线程中处理回调?就像创建调用的线程不会受到回调处理的影响一样吗?谢谢!

最佳答案

Redis 客户端不创建任何额外的客户端线程,并在现有线程中工作。

Redis 在另一个(主)进程中工作。您使用的 redis API 在您的本地进程中工作,并使用进程间通信到主进程。异步请求意味着您的进程或线程将任务交给另一个,然后可能会执行任何其他任务或等待事件。一段时间后,异步回复到达您的应用程序并可供使用。您的应用程序必须使用 https://en.wikipedia.org/wiki/Event_loop或任何通过调用回调来处理事件(在本例中为 redis 应答)来通知您的异步管理系统。

异步架构意味着您运行事件循环,为每个事件调用回调处理程序。当调用回调时,您可以创建多个异步任务。一旦任务创建,它应该比当任务完成或发生错误时调用回调事件处理程序。回调可以分配给启动应用程序或出现新的网络连接。当调用回调时,您可以创建 redis 任务,稍后将调用结果事件回调。当前线程中的所有内容。我有多个线程,可以合理地预期每个线程都有一个事件循环。

Redis 的单线程特性:http://redis.io/topics/latency#single-threaded-nature-of-redis

客户端套接字处于非阻塞状态,因为 Redis 使用多路复用和非阻塞 I/O。 http://redis.io/topics/clients这意味着您的客户端永远不会被阻止。

来自Redis 2.4 threads在Redis中的使用只是为了在后台执行一些缓慢的I/O操作,主要与磁盘I/O有关,但这并没有改变Redis使用单个线程来服务所有请求的事实.

关于c++ - hiredis Redis 库是否为异步回调创建自己的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35426726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com