Самый быстрый способ проверить наличие ключа в Redis — php

Есть ли другой более быстрый способ, чем EXISTS, проверить, существует ли ключ в Redis или нет?

Моя проблема в том, что у меня более 1 миллиона записей в Redis, и мне нужно выполнить проверку key_exists. Это должно произойти в течение 10 мс.

Любые идеи по этому поводу?


person ArunKolhapur    schedule 19.12.2016    source источник
comment
EXISTS имеет временную сложность O(1), это лучшее, что вы можете получить.   -  person Federkun    schedule 19.12.2016


Ответы (3)


Использование команды EXISTS — самый быстрый способ, это должно быть очень быстро. Если вы чувствуете, что это слишком медленно, возможно, это задержка между вашим сервером и сервером Redis, а не сама команда.

person fire    schedule 19.12.2016

Чтобы сократить время, вам нужно хранить индексы ваших ключей, используя какой-то шаблон, логический для вашего приложения. Это означает, что вместо того, чтобы делать exists для всех ключей, вы можете сделать sismember или zscore для вашего набора индексов/zset. Так, например, у вас есть ключи, связанные с пользователями, сообщениями, списками лидеров и т. д., вы храните наборы с именами keys:users , keys:messages и т. д. У меня есть библиотека с открытым исходным кодом, которая помогает управлять именами ваших ключей и немного упрощает эту работу https://github.com/imikemiller/Pkeys

person Mike Miller    schedule 30.07.2017

Временная сложность exists равна O(1), поэтому это самый быстрый из возможных алгоритмов.

Ваша проблема откуда-то еще, но вы можете проверить реальное время выполнения exists с помощью SLOWLOGкоманды Чтобы убедиться.

person Amin Shojaei    schedule 06.06.2020