redis是如何实现进程间通信的?

hal*_*ack 1 redis

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

redis.StrictRedis(host=REDIS_IP,port=PORT)
Run Code Online (Sandbox Code Playgroud)

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

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

如果有问题,请指出.谢谢

Did*_*zia 8

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

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

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

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