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