我们可以简单地使用redis来实现远程通信,例如:
redis.StrictRedis(host=REDIS_IP,port=PORT)
我不知道redis是否以相同的模式实现了远程和本地?
也许我只是想知道redis如何以不同的方式实现网络通信和进程间通信?
如果出现问题,请指出。感谢
答案 0 :(得分:7)
Redis可以处理经典的TCP套接字,但也可以处理面向流的unix domain sockets。
TCP套接字可用于执行网络和本地进程间通信。 Unix域套接字只能支持本地进程间通信。
这两种套接字都是由文件描述符实现的。 Redis基于在文件描述符级别工作的事件循环,因此它以相同的方式处理TCP和unix域套接字(使用标准网络API)。您将在ae.c(事件循环)和anet.c(网络)中找到大多数相关的源代码。
当客户端和服务器托管在同一个盒子上时,您可以使用unix域套接字来提高Redis往返的性能。这取决于您的工作负载,但TCP套接字上的unix域套接字的性能优势(在吞吐量方面)通常约为1.5(即使用unix域套接字时,您可以处理多50%的操作)。