在Redis中检查键是否存在的最快方法 - PHP

6

有没有比EXISTS更快的方式来检查Redis中是否存在键?

我的问题是,我在Redis中有超过100万条记录,我需要进行key_exists检查。这应该在10毫秒内完成。

有什么好的想法吗?


2
EXISTS的时间复杂度为O(1),这已经是最好的了。 - Federkun
3个回答

9

使用EXISTS命令是最快的方式,这应该非常快。如果您觉得它太慢了,那可能是您的服务器和redis服务器之间的延迟问题,而与命令本身无关。


0
为了减少保留键的时间,可以使用某些模式逻辑来管理您的应用程序。这意味着,不必在所有键上执行exists操作,而是可以在您的索引集/有序集上执行sismemberzscore操作。例如,如果您有与用户、消息和排行榜相关的键,则可以保留名为keys:userskeys:messages等的集合。我开源了一个库,帮助管理您的键名称,并使此过程变得更加容易 https://github.com/imikemiller/Pkeys

0

exists 的时间复杂度为O(1), 所以它是最快的算法可能

你的问题可能来自其他方面,但是您可以使用 SLOWLOG命令来检查exists的实际执行时间。


Redis文档指出,EXISTS操作的时间复杂度为O(N),取决于它所搜索的keyspace的大小。如果keyspace非常大,这仍然可能是一个缓慢的操作。 - BrianV
1
@BrianV 不是的。O(N)中的N指的是输入键的数量。因此,如果您输入三个键,则会有O(3)。但删除键的主要操作是O(1)。来自文档:时间复杂度:O(N),其中N是要检查的键数。因此,仍然是O(1)和最快的可能方式。 - Amin Shojaei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接