对于那些对Redis内部更熟悉并且也许知道答案的人,我有一个快速的问题。

我使用socket.io并具有一个sessionID映射-存储的套接字。除此之外,我使用SET命令存储空值以指示用户已连接(如果没有套接字与sessionID关联)。为了解决页面重新加载,DEL命令会超时执行。这导致我没有事件套接字的情况,但是Redis中仍设置了联机状态。

这意味着如果用户使用单个选项卡,则每次重新加载页面均意味着将执行SET命令。我想知道的是SETNX在这里是否会更出色?基本上,由SETNX执行的检查是否比用SET再次设置值更快?假设该值将在99.99%的情况下存在。

我的猜测是应该更快,但是也许有些我不知道。那么谁能证实我的猜测或向我解释为什么SET可能仍然更快?

最佳答案

一般来说,SETNX可能会稍快一些,因为有时它不会设置该值。但是,在您的用例中,考虑到值(空字符串)的大小,性能上的差异可能可以忽略不计。进行测试以确保:)

10-04 21:32