【问题标题】:redis is how to achieve inter-process communication?redis是如何实现进程间通信的?
【发布时间】:2012-12-28 13:02:08
【问题描述】:

我们可以简单地使用redis来实现远程通信如:

redis.StrictRedis(host=REDIS_IP,port=PORT)

不知道redis是否实现了remote和local的模式一样?

也许我只是想知道redis如何以不同的方式实现网络通信和进程间通信?

如有不妥之处,请指出。谢谢

【问题讨论】:

  • @SergioTulentsev,我想知道,redis 与本地进程和远程进程的客户端通信有什么不同的方式吗?

标签: redis


【解决方案1】:

Redis 可以处理经典的 TCP 套接字,也可以处理面向流的unix domain sockets

TCP 套接字可用于执行网络和本地进程间通信。 Unix 域套接字只能支持本地进程间通信。

这两种套接字都由文件描述符实现。 Redis 基于在文件描述符级别工作的事件循环,因此它以完全相同的方式处理 TCP 和 unix 域套接字(使用标准网络 API)。您可以在ae.c(事件循环)和anet.c(网络)中找到大部分相关的源代码。

当客户端和服务器托管在同一个机器上时,您可以使用 unix 域套接字来提高 Redis 往返的性能。这取决于您的工作负载,但与 TCP 套接字相比,unix 域套接字的性能优势(在吞吐量方面)通常约为 1.5(即,使用 unix 域套接字时,您可以多处理 50% 的操作)。

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    相关资源
    最近更新 更多