1

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

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

我不知道redis是否以相同的模式实现远程和本地?

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

如有不妥,请指出。谢谢

4

1 回答 1

8

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

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

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

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

于 2013-01-14T15:01:30.627 回答