В нашем проекте распределенного хранилища с использованием LevelDB в качестве механизма хранения и memcached в качестве уровня кэширования у нас есть один сценарий: 95% запросов с ключами не существуют в механизме хранения.
На уровне memcached, если не удается найти ключ, запросите LevelDB.
В LevelDB мы используем фильтр Блума по умолчанию, чтобы выяснить, существует ключ или нет, но по-прежнему имеем 1% ложных срабатываний. Из-за процента 1% мы должны запрашивать значение через ввод-вывод, что не может быть допущено клиентом. (95% ключей не существует)
Есть ли лучшее решение, чтобы узнать, не существует ли ключ?
Обновление: 1. Ключи генерируются каждый день (идентификатор пользователя + дата), если не удается получить ключ, клиент помещает значение в уровень хранения. 2. Клиент хочет задержку чтения (TP99) ‹ x мс (клиент чувствителен к задержке)